I attempted to create an AVD for Jellybean (API 17) in Kubuntu 17.04 using the following procedure:
Launch the AVD Manager from Android Studio
Click the “Create Virtual Device” button:
Select the Nexus 4 hardware profile:
Click the “x86 Images” tab and select “Jelly Bean / 17 / x86 / Android 4.2 (with Google APIs)” image:
Leave the settings at their defaults:
Now, due to an unfortunate issue with Ubuntu 17.04 (and its derivatives), it is not possible to launch the emulator directly by clicking the play button next to its entry. (Clicking it does nothing.) Instead, I must launch the emulator from the terminal with:
$ cd ~/Android/Sdk/tools $ LD_PRELOAD='/usr/$LIB/libstdc++.so.6' ./emulator -avd Nexus_4_API_17
The emulator starts and the home screen appears:
However, interacting with it immediately reveals that there is a problem. The camera displays an error:
Clicking on “Storage” in the Settings app causes the Settings app to crash.
What did I do wrong and how can I fix this?
Edit: I clicked “Show Advanced Settings” and confirmed that an SD card was indeed to be created:
I also confirmed that the file
Edit: I followed the same procedure to create a Kit Kat AVD (using the Nexus 5 hardware profile) and the issue is not present there. The SD card works as expected.
Edit: I tried using
mksdcard to manually create an SD card image:
mksdcard -l TEST 100M sdcard.img
…and then passing it directly to the emulator:
emulator -sdcard sdcard.img -avd [...]
…but this made no difference.
However, I discovered something interesting after opening a root terminal on the device (using
adb shell) and running the
# mount rootfs / rootfs ro,relatime 0 0 tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0 tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0 tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0 /dev/block/vda /system ext4 ro,relatime,data=ordered 0 0 /dev/block/vdb /cache ext4 rw,nosuid,nodev,noatime,errors=panic,data=ordered 0 0 /dev/block/vdc /data ext4 rw,nosuid,nodev,noatime,errors=panic,data=ordered 0 0 # df Filesystem Size Used Free Blksize /dev 757M 68K 757M 4096 /mnt/secure 757M 0K 757M 4096 /mnt/asec 757M 0K 757M 4096 /mnt/obb 757M 0K 757M 4096 /system 532M 349M 183M 4096 /cache 60M 40K 60M 4096 /data 1G 75M 1G 4096
It appears as if the SD card isn’t being mounted, since
/dev/block/vdd is missing in the output above and none of the partitions have a capacity of 100M.
After some research I’m ended up to an answer: JellyBean is too old to be used on recent emulator.
If you want to continue to use this system and wanto to use also the sd card, this can be a nice workaound for you.
Launch manually the emulator as:
cd ~/Android/Sdk/emulator LD_PRELOAD='/usr/$LIB/libstdc++.so.6' ./emulator @Nexus_4_API_17 -verbose -engine classic
Note the -engine classic that will load the old/classic qemu with kernel kerne-qemu instead of new qemu2 with kernel kernel-ranchu (available options are: auto, classic, qemu2)
try using Genymotion. it much faster.
Genymotion operation relies on the use of Oracle VM VirtualBox in the background. This enables virtualizing Android operating systems. If you do not already have Oracle VM VirtualBox installed, you will be asked to do so prior to installing Genymotion.
When you create an AVD it’s possible to say whether to emulate SDCard or not (and of what size). Looks like you simply did not specify the SDCard presence. Edit your AVD settings and make sure you have explicitly requested for SDCard support. I think this options in Advanced settings in your step 7.
For settings issue
Edit the hardware profile and change the dimensions to 4.2 inches(Not sure Why? But i think upto 17 max resolution available was 4.2 inches).
Reboot the device
Your settings will start working.
The issue is the file system which is in read only mode. You need to change the file system. Check this link.
After changing the file system push few images and restart.
Another issue i found that there is no DCIM folder present.
Try creating the /mnt/sdcard/DCIM and add few images too.
Reboot again. Everything will start working.
You can use genymotion:
Genymotion is an emulator using x86 architecture virtualization,
making it much more efficient!
Taking advantage of OpenGL hardware acceleration, it allows you to
test your applications with amazing 3D performance