Android emulator won't mount SD card

孤街浪徒 提交于 2019-12-10 12:41:57

问题


I'm running a virtual machine in Android Studio. The problem is that it is never mounting the SD card. In the settings, I've tried studio-managed (100MB) as well as creating one by myself:

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

The file is in my home folder with R/W rights.

This is my configuration:

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

As you can see, hw.sdCard is set to YES.

Honestly I don't know what to look for in Logcat. Filtering MOUNT I saw this:

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

I've also tried running this in the command line:

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

But I don't see any error. The SD card just won't mount.


回答1:


This seems to be an issue with the recent emulator version, possibly in relation with older Android versions (Jelly Bean, etc.).

Downgrading the SDK tools to a previous version solves the issue.

It works for example with r25.2.5, which you can download for Windows, Linux, or Mac OS X. If you store the tools outside of the original SDK directory you may need to set the ANDROID_SDK_ROOT environment variable.

Then use the emulator executable shipped with this package to start your AVD:

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


来源:https://stackoverflow.com/questions/45681272/android-emulator-wont-mount-sd-card

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!