Эмулятор/виртуальное устройство Pixel 2 отсутствует в списке устройств диспетчера AVD

Вопрос

Можно ли создать виртуальное устройство Pixel 2 только через Android Studio (v3.1.4), а не через avdmanager?

Что мы хотим сделать

Используйте avdmanager для автоматического создания устройства Pixel 2 (скрипт непрерывной интеграции на основе avdmanger). Нам нужно явно использовать устройство Pixel 2.

Проблема

Выполнение $ANDROID_HOME/tools/bin/avdmanager list не возвращает аппаратный профиль Pixel 2, но возвращает ошибку:

Parsing ****
Available Android Virtual Devices:
The following Android Virtual Devices could not be loaded:
    Name: Pixel_2_API_28
    Path: /home/user/.android/avd/Pixel_2_API_28.avd
   Error: Google pixel_2 no longer exists as a device
Available devices definitions:
id: 0 or "tv_1080p"
    Name: Android TV (1080p)
    OEM : Google
    Tag : android-tv

Дополнительная информация

Мне пришлось выполнить следующую команду, чтобы выполнить команду avdmanager с JAVA 10.0.2 export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'. В противном случае я получаю сообщение об ошибке, упомянутое здесь: Не удалось установить android-sdk: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema


person hb0    schedule 14.09.2018    source источник


Ответы (3)


Мне удалось найти описание Pixel 2, которое плагин Android Studio использует в

com/android/sdklib/devices/nexus.xml,

этот файл находится в

$ANDROID_HOME/plugins/android/lib/sdklib.jar

но я не смог понять, как заставить avdmanager загружать тот же sdklib, который использует плагин Android Studio.

person Asyn DE Shown    schedule 10.12.2018
comment
FWIW: я обошел эту проблему, создав нужные мне AVD локально, а затем клонировав их в свои блоки сборки CI. Может быть, не идеально в вашем случае использования, но это сработало для меня. - person Asyn DE Shown; 11.12.2018

либо отредактируйте config.ini AVD, либо измените его модель в AVD Manager.

что осталось:

id: 17 or "pixel"
    Name: Pixel
    OEM : Google
---------
id: 18 or "pixel_c"
    Name: Pixel C
    OEM : Google
---------
id: 19 or "pixel_xl"
    Name: Pixel XL
    OEM : Google

использование Java 10 не должно иметь большого значения, поскольку определение устройства больше недоступно.

если вы действительно настаиваете на Pixel 2; вы можете добавить определение устройства в ~/.android/devices.xml.

person Martin Zeitler    schedule 14.09.2018
comment
Возможно, я был неясен: мне нужно использовать пиксель 2, потому что нам нужно протестировать на этом устройстве. Кроме того, это устройство должно быть создано с помощью avdmanager, поскольку в среде CI нет доступного пользовательского интерфейса для создания виртуального устройства с помощью Android Studio и последующего его правильного связывания. - person hb0; 14.09.2018
comment
@ hb0 Я с трудом могу себе представить, что какое-то имя виртуального устройства будет иметь наименьшее значение для AVD (потому что оно все равно) ... поэтому pixel должно быть эквивалентным (в случае совпадения размера экрана). почему вы думаете, что они удалили его? у вас даже не будет никакого кадра устройства при работе без головы, поэтому это полное заблуждение. в то время как можно создавать собственные устройства, если размер экрана / dpi должен меняться, или просто подключить аппаратное устройство. - person Martin Zeitler; 14.09.2018
comment
Извините за поздний ответ: у нас есть интеграционный тест, в котором используются обновления местоположения. Этот тест выполняется только на виртуальных устройствах типа pixel2, как и на обычном устройстве. Я предполагаю, что Google улучшил эмулируемую службу определения местоположения на этом эмуляторе по сравнению с другими профилями эмулируемых устройств. Вы уверены, что реализация не отличается между разными профилями? Можете ли вы предоставить источник? В этом случае я не мог объяснить, почему тест работает только на эмуляторах пикселя-2, а не, например. на эмуляторах пикселей с тем же Android API. - person hb0; 27.09.2018

Я решил проблему, используя AndroidSDK/cmdline-tools/latest/bin/avdmanager.

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

Старая папка AndroidSDK/tools устарела и больше не должна использоваться.

person MatPag    schedule 15.01.2021