Issue
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 "Next"
Click the "x86 Images" tab and select "Jelly Bean / 17 / x86 / Android 4.2 (with Google APIs)" image:
Click "Next"
Leave the settings at their defaults:
Click "Finish"
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 ~/.android/avd/Nexus_4_API_17.avd/sdcard.img.qcow2
exists.
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
and df
commands:
# 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.
Solution
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)
Answered By - Matteo Gaggiano
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.