ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [android] 에뮬레이터에서 외장 메모리 사용하기
    기술 관련/Android 2009. 4. 30. 13:28
    일반적인 단말에서 외장 메모리 카드를 지원하듯이 android 에서도 SDCard 라는 형태로 외장 메모리를 지원한다.
    이는 emulator에서도 확인 해 볼 수 있는데 다음과 같이 두 가지 방법으로 제공하고 있다.

    1. AVD 생성 시 SDCard 생성.
    Emulator의 사용을 위해 AVD (Android Virtual Device)를 생성할 때 SDCard를 같이 생성하는 방법이다.

    $ cd $SDK1.5_HOME/tools/
    $ ./android create avd -n mydroid_1.5_sd32 -t 2 -c 32M

    이와 같이 생성 시 해당 AVD를 이용하는 Emulator는 모두 SDCard를 자동으로 인식하도록 되어 있다.
    만약 기본으로 AVD 생성했다면 SDCard를 제거했다는 메시지를 볼 수 있다.






    2. SDCard 이미지 생성 후 추가

    다른 또하나의 방법은 Disk 이미지를 생성하여 이를 mount 하는 방법이다.

    이는 Command line으로만 관리가 되므로 Console에서 다음과 같이 입력한다.

    $ cd $SDK1.5_HOME/tools/
    $ ./mksdcard 32M extdisk32.iso

    extdisk32.iso는 32 MB 크기의 파일로 생성 됨을 볼 수 있다.

    이제 이 이미지를 Emulator에 반영해야 하는데 Android Emulator는 실행 중 SDCard의 탈부착에 대한 처리를 하지 않고 있다. 따라서, Emulator 실행 시 -sdcard 옵션을 추가해서 실행 해 주어야 한다.

    Command line으로 실행 할 경우는 다음과 같다.

    $ ./android -sdcard extdisk32.iso

    Eclipse에서 실행하는 경우 기존 실행되던 emulator를 종료 후 해당 프로젝트의 실행 (Run) 구성을 변경해야 한다.

    1. 메뉴 - Run 항목 - Open Run Dialog 선택
    2. Android Application 항목의 해당 Application Package 선택
    3. Target 탭에 `Additional Emulator Command Line Options'항목 선택
    -sdcard <파일 경로>extdisk32.iso

    <파일 경로>는 extdisk32.iso 가 저정된 위치를 입력해야 한다.



    이 상태로 실행하면 SDCard를 제거했다는 메시지는 보이지 않는다.



    이제 SDCard에 데이터를 넣어 보자.

    Emulator가 실행 중에는 Console에서 adb를 이용하여 다음과 같이 파일을 저장 할 수 있다.

    $ cd $SDK1.5_HOME/tools/
    $ ./adb push testfile.txt /sdcard/testfile.txt

    Eclipse를 이용하는 경우 DDMS에서 File Explore 탭을 이용하면 보다 쉽게 접근 할 수 있다.



    만약 Emulator가 실행되고 있지 않은 상태에서는 ISO 파일로 생성한 경우만 수정 가능하며, Ultra ISO와 같은 일반적인 ISO 편집 프로그램을 이용하면 된다.

    그리고 또 하나, MS Windows가 아닌 환경 (Linux 등)에서 ISO 파일을 사용할 때 다음과 같은 메시지와 함께 외장 메모리가 인식되지 않는 경우가 있다.

    ignoring locked SD Card image ...

    이런 경우는 다른 Emulator에서 해당 ISO 파일을 사용하고 있거나 아니면 File Access Permission이 없거나 ISO 파일이 있는 파티션이 FAT32와 같이 vfat일 경우에 발생한다. 이런 경우 다음과 같이 처리하면 된다.

    Permission이 없는 경우는 다음과 같이 full permission을 주고 확인 해 보면 된다.

    $ chmod 777 extdisk32.iso
    $ ls -l extdisk32.iso
    -rwxr-xr-x 1 mc500 mc500 33554432 2009-06-04 18:44 extdisk32.iso

    만약 vfat을 사용하는 경우 ISO파일을 리눅스 파티션으로 옮겨 놓거나 다음과 같이 symbolic link를 이용해서 링크를 걸면 된다.

    $ ln -s $VFAT_DISK/extdisk32.iso $LINUX_DISK/extdisk32.iso


    Android Emulator에 대한 자세한 설명은 다음 문서 (http://developer.android.com/guide/developing/tools/emulator.html) 를 참고하기 바란다.

    댓글

Designed by Tistory.