Как создать рабочий AVD для Jellybean (API 17)?

Я попытался создать AVD для Jellybean (API 17) в Kubuntu 17.04, используя следующую процедуру:

  • Запустите AVD Manager из Android Studio

  • Нажмите кнопку "Создать виртуальное устройство":

    введите описание изображения здесь

  • Выберите аппаратный профиль Nexus 4:

    введите описание изображения здесь

  • Нажмите "Далее"

  • Перейдите на вкладку "Изображения x86" и выберите "Jelly Bean/17/x86/Android 4.2 (с API Google)":

    введите описание изображения здесь

  • Нажмите "Далее"

  • Оставьте настройки по умолчанию:

    введите описание изображения здесь

  • Нажмите "Готово"

Теперь из-за неудачной проблемы с Ubuntu 17.04 (и ее производными) невозможно запустить эмулятор напрямую, нажав кнопку воспроизведения рядом со своей записью. (Щелчок на нем ничего не делает.) Вместо этого я должен запустить эмулятор с терминала с помощью

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

Эмулятор запускается и появляется главный экран:

введите описание изображения здесь

Однако взаимодействие с ним сразу показывает, что есть проблема. На камере отображается сообщение об ошибке:

введите описание изображения здесь

Нажатие "Хранилище" в приложении "Настройки" приводит к сбою приложения "Настройки".

Что я сделал неправильно и как я могу это исправить?


Изменить: Я нажал кнопку "Показать дополнительные настройки" и подтвердил, что необходимо создать SD-карту:

введите описание изображения здесь

Я также подтвердил, что файл ~/.android/avd/Nexus_4_API_17.avd/sdcard.img.qcow2 существует.


Изменить: Я выполнил ту же процедуру для создания Kit Kat AVD (используя аппаратный профиль Nexus 5), и проблема там отсутствует. Карта SD работает должным образом.


Изменить: Я попытался использовать mksdcard, чтобы вручную создать образ SD-карты:

mksdcard -l TEST 100M sdcard.img

... и затем передавая его непосредственно эмулятору:

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

... но это не имело значения.

Однако я обнаружил что-то интересное после открытия корневого терминала на устройстве (используя adb shell) и запуская команды mount и df:

# 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

Кажется, что SD-карта не монтируется, так как /dev/block/vdd отсутствует в выводе выше, и ни один из разделов не имеет значения 100M.

Ответы

Ответ 1

После некоторых исследований я пришел к ответу: JellyBean слишком стар, чтобы его можно было использовать на недавнем эмуляторе.

Если вы хотите продолжать использовать эту систему и хотите использовать также SD-карту, это может быть приятным для вас.

Запустите вручную эмулятор как:

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

Обратите внимание на классику -engine, которая будет загружать старый/классический qemu с ядром kerne-qemu вместо нового qemu2 с ядром ядра-ранчу (доступные параметры: auto, classic, qemu2)

Ответ 2

Когда вы создаете AVD, можно сказать, следует ли эмулировать SDCard или нет (и какого размера). Похоже, вы просто не указали наличие SDCard. Измените настройки AVD и убедитесь, что вы явно запросили поддержку SDCard. Я думаю, что эти параметры в дополнительных настройках вашего шага 7.

Ответ 3

Для настройки параметров

Измените профиль оборудования и измените размеры до 4,2 дюйма (Не знаете, почему? Но я думаю, что до 17 максимальных разрешений было 4,2 дюйма).

Reboot the device

Ваши настройки начнут работать.

Для камеры

Проблема заключается в файловой системе, которая находится в режиме только для чтения. Вам нужно изменить файловую систему. Проверьте ссылку .

После изменения файловой системы нажмите несколько изображений и перезапустите.

Еще одна проблема: я обнаружил, что нет папки DCIM. Попробуйте создать /mnt/sdcard/DCIM и добавить несколько изображений.

Перезагрузитесь снова. Все начнет работать.

Ответ 4

Вы можете использовать genymotion: https://www.genymotion.com/

Genymotion - это эмулятор, использующий виртуализацию архитектуры x86, что делает его намного более эффективным!

Воспользовавшись аппаратным ускорением OpenGL, он позволяет вам тестируйте свои приложения с потрясающей 3D-производительностью

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

Ответ 5

попробуйте использовать Genymotion. это намного быстрее. Операция Genymotion основана на использовании виртуальной виртуальной машины Oracle VM в фоновом режиме. Это позволяет виртуализировать операционные системы Android. Если вы еще не установили Oracle VM VirtualBox, вас попросят сделать это до установки Genymotion.