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.
In the Android SDK Manager, select Tools | Manage AVDs. In the Android Virtual Device Manager, click the New button to create a new virtual device. In the Create new Android Virtual Device (AVD) dialog box, select an Android device to emulate, and enter the details describing the Android device you want to emulate.
In Android Studio, create an Android Virtual Device (AVD) that the emulator can use to install and run your app. In the toolbar, select your app from the run/debug configurations drop-down menu. From the target device drop-down menu, select the AVD that you want to run your app on. Click Run .
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With