web-dev-qa-db-ja.com

AndroidエミュレータはSDカードをマウントしません

Android Studioで仮想マシンを実行しています。問題は、SDカードがマウントされないことです。設定では、スタジオ管理(100MB)と作成を試しました。一人で:

$ ./mksdcard -l sdCard 100M sdcard.img

ファイルは、R/W権限を持つ私のホームフォルダーにあります。

これは私の構成です:

avd.ini.encoding=UTF-8
AvdId=DEVICEC_API_17
PlayStore.enabled=false
abi.type=x86
avd.ini.displayname=DEVICEC API 17
disk.dataPartition.size=800M
hw.accelerometer=no
hw.audioInput=yes
hw.battery=yes
hw.camera.back=emulated
hw.camera.front=emulated
hw.cpu.Arch=x86
hw.cpu.ncore=4
hw.dPad=no
hw.device.manufacturer=User
hw.device.name=DEVICEC
hw.gps=no
hw.gpu.enabled=yes
hw.gpu.mode=auto
hw.initialOrientation=landscape
hw.keyboard=yes
hw.lcd.density=160
hw.mainKeys=no
hw.ramSize=1536
hw.sdCard=yes
hw.sensors.orientation=no
hw.sensors.proximity=no
hw.trackBall=no
image.sysdir.1=system-images/Android-17/google_apis/x86/
runtime.network.latency=none
runtime.network.speed=full
sdcard.path=/home/user/sdcard.img
showDeviceFrame=no
skin.dynamic=yes
skin.name=800x600
skin.path=_no_skin
skin.path.backup=_no_skin
tag.display=Google APIs
tag.id=google_apis
vm.heapSize=48

ご覧のように、 hw.sdCardYESに設定されます。

正直なところ、Logcatで何を探すべきかわかりません。 MOUNTのフィルタリング私はこれを見ました:

08-14 17:45:55.544 1495-1508/system_process I/SystemServer: Mount Service
08-14 17:45:55.544 1495-1508/system_process D/MountService: got storage path: /mnt/sdcard description: USB storage primary: true removable: false emulated: false mtpReserve: 0 allowMassStorage: false maxFileSize: 0
08-14 17:45:55.544 1495-1508/system_process D/MountService: addVolumeLocked() StorageVolume [mStorageId=0 mPath=/mnt/sdcard mDescriptionId=17040615 mPrimary=true mRemovable=false mEmulated=false mMtpReserveSpace=0 mAllowMassStorage=false mMaxFileSize=0 mOwner=null]
08-14 17:45:55.554 1495-1533/system_process D/MountService: volume state changed for /mnt/sdcard (null -> removed)
08-14 17:45:55.554 1495-1533/system_process W/MountService: getSecureContainerList() called when storage not mounted

コマンドラインでこれを実行してみました:

$ ./emulator -avd CASIO_API_17 -sdcard /home/mariano/sdcard.img

しかし、エラーは見られません。 SDカードがマウントされません。

15
Mariano L

これは、おそらく古いAndroidバージョン(ジェリービーンズなど)に関連して、最近のエミュレーターバージョンの問題のようです。

SDKツールを以前のバージョンにダウングレードすると、問題が解決します。

たとえば、r25.2.5で動作します。これは、 WindowsLinux 、または Mac OS X でダウンロードできます。元のSDKディレクトリの外部にツールを保存する場合は、Android_SDK_ROOT環境変数を設定する必要がある場合があります。

次に、このパッケージに付属のエミュレータ実行可能ファイルを使用して、AVDを開始します。

$ ./emulator -avd CASIO_API_17 -sdcard /home/mariano/sdcard.img
6
Floern