Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android emulator won't mount SD card

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.

like image 470
Mariano L Avatar asked Aug 14 '17 18:08

Mariano L


People also ask

How can I get my SD card to mount?

Mounting an SD card should be as simple as inserting it into your Android device, then following the prompt to “Mount” it. Some more modern smartphones automatically mount your SD card without asking, while on others you may need to go to “Settings -> Storage -> SD card” and follow the prompt to mount it from there.


1 Answers

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
like image 199
Floern Avatar answered Oct 01 '22 19:10

Floern