如何为Jellybean(API 17)创build一个可用的AVD?

我尝试使用以下步骤在Kubuntu 17.04中为Jellybean(API 17)创buildAVD:

  1. 从Android Studio启动AVDpipe理器

  2. 点击“创build虚拟设备”button:

    在这里输入图像说明

  3. selectNexus 4硬件configuration文件:

    在这里输入图像说明

  4. 点击下一步”

  5. 点击“x86 Images”选项卡并select“Jelly Bean / 17 / x86 / Android 4.2(with Google APIs)”图片:

    在这里输入图像说明

  6. 点击下一步”

  7. 保留默认设置:

    在这里输入图像说明

  8. 点击“完成”

现在,由于Ubuntu 17.04(及其派生版)的一个不幸的问题,通过点击条目旁边的播放button,直接启动模拟器是不可能的。 (点击它什么也不做。)相反,我必须从terminal启动模拟器:

$ cd ~/Android/Sdk/tools $ LD_PRELOAD='/usr/$LIB/libstdc++.so.6' ./emulator -avd Nexus_4_API_17 

模拟器启动并出现主屏幕:

在这里输入图像说明

但是,立即与之交互就会发现问题。 相机显示错误:

在这里输入图像说明

点击“设置”应用程序中的“存储”会导致设置应用程序崩溃。

我做错了什么,我该如何解决这个问题?


编辑:我点击“显示高级设置”,并确认SD卡确实要创build:

在这里输入图像说明

我也确认文件~/.android/avd/Nexus_4_API_17.avd/sdcard.img.qcow2存在。


编辑:我遵循相同的程序来创build一个Kit Kat AVD(使用Nexus 5硬件configuration文件),问题存在那里。 SD卡按预期工作。


编辑:我尝试使用mksdcard手动创build一个SD卡图像:

 mksdcard -l TEST 100M sdcard.img 

…然后将其直接传递给模拟器:

 emulator -sdcard sdcard.img -avd [...] 

…但这没有什么区别。

但是,在设备上打开根端子(使用adb shell )并运行mountdf命令后,我发现了一些有趣的事情:

  #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
文件系统大小使用免费Blksize
 / dev 757M 68K 757M 4096
 / mnt / secure 757M 0K 757M 4096
 / mnt / asec 757M 0K 757M 4096
 / mnt / obb 757M 0K 757M 4096
 /系统532M 349M 183M 4096
 /caching60M 40K 60M 4096
 /数据1G 75M 1G 4096 

由于/dev/block/vdd在上面的输出中缺失,并且没有一个分区的容量为100M,所以看起来好像没有安装SD卡。

Solutions Collecting From Web of "如何为Jellybean(API 17)创build一个可用的AVD?"

经过一番研究,我最终得出了一个答案:果冻豆太老,不适合在最近的模拟器上使用。

如果你想继续使用这个系统,并想要使用SD卡,这可以是一个很好的工作,为你。

手动启动仿真器:

 cd ~/Android/Sdk/emulator LD_PRELOAD='/usr/$LIB/libstdc++.so.6' ./emulator @Nexus_4_API_17 -verbose -engine classic 

注意-engine的经典 ,将加载内核kerne-qemu旧的/经典的qemu而不是新的内核kernel-ranchu的qemu2 (可用的选项是: 汽车经典QEMU2

当您创build一个AVD时,可以说是否模拟SDCard(以及什么尺寸)。 看起来你只是没有指定SD卡的存在。 编辑您的AVD设置,并确保您明确要求提供SDCard支持。 我想在第7步中的高级设置中的这个选项。

对于设置问题

编辑硬件configuration文件,并将尺寸更改为4.2英寸(不知道为什么?但我认为高达17最大分辨率可用是4.2英寸)。

 Reboot the device 

您的设置将开始工作。

对于相机

问题是处于只读模式的文件系统。 您需要更改文件系统。 检查这个链接 。

更改文件系统后,推入几张图片并重新启动。

另一个问题,我发现没有DCIM文件夹存在。 尝试创build/ mnt / sdcard / DCIM并添加一些图片。

重新启动。 一切都将开始工作。

你可以使用genymotion: https ://www.genymotion.com/

Genymotion是一款使用x86架构虚拟化的仿真器,使其效率更高!

利用OpenGL硬件加速function,可以让您以惊人的3D性能testing您的应用程序

http://hackpundit.com/android-emulator-genymotion-installation/

尝试使用Genymotion 。 它快得多。 Genymotion操作依赖于在后台使用Oracle VM VirtualBox。 这使得可以虚拟化Android操作系统。 如果您还没有安装Oracle VM VirtualBox,则在安装Genymotion之前会要求您这样做。