Как создать рабочий AVD для Jellybean (API 17)?
Я попытался создать AVD для Jellybean (API 17) в Kubuntu 17.04, используя следующую процедуру:
-
Запустите AVD Manager из Android Studio
-
Нажмите кнопку "создать виртуальное устройство":
-
Выберите профиль оборудования Nexus 4:
-
Нажмите Кнопку "Далее"
-
Перейдите на вкладку "x86 Images" и выберите " Jelly Bean / 17 / x86 / Android 4.2 (с Google API) " изображение:
-
Нажмите Кнопку "Далее"
-
Оставьте настройки по умолчанию:
-
Нажмите Кнопку "Готово"
Теперь из-за неудачной проблемы с 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 ответов:
После некоторых исследований я пришел к ответу: 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.