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


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

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

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

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

  3. Выберите профиль оборудования Nexus 4:

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

  4. Нажмите Кнопку "Далее"

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

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

  6. Нажмите Кнопку "Далее"

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

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

  8. Нажмите Кнопку "Готово"

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

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

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

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

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

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

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

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

Edit: я нажал " показать дополнительно Настройки " и подтвердил, что SD-карта действительно должна быть создана:

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

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


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


Edit: я попытался использовать 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 отсутствует в выводе выше, и ни один из разделов не имеет емкости 100 м.

5 19

5 ответов:

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

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

Запустите эмулятор вручную следующим образом:

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

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

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

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

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

Reboot the device

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

Для камеры

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

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

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

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

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

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

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

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

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