Как создать рабочий 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.