像素 2 模拟器/虚拟设备不在 AVD 管理器设备列表中
Posted
技术标签:
【中文标题】像素 2 模拟器/虚拟设备不在 AVD 管理器设备列表中【英文标题】:Pixel 2 Emulator / Virtual Device not in AVD manager device list 【发布时间】:2019-02-19 02:42:19 【问题描述】:问题
您只能通过 android Studio (v3.1.4) 而不是通过 avdmanager 创建 Pixel 2 虚拟设备吗?
我们想做的事
使用avdmanager自动创建一个Pixel 2设备(基于avdmanager的持续集成脚本)。我们需要明确使用像素 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
其他详情
我必须执行以下命令才能使用 JAVA 10.0.2 export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
执行 avdmanager 命令。否则,我会收到此处提到的错误:Failed to install android-sdk: "java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema"
【问题讨论】:
【参考方案1】:我能够找到 Android Studio 插件在
中使用的 Pixel 2 的描述com/android/sdklib/devices/nexus.xml
,
那个文件在
$ANDROID_HOME/plugins/android/lib/sdklib.jar
但我无法弄清楚如何让 avdmanager
加载 Android Studio 插件使用的相同 sdklib。
【讨论】:
FWIW:我通过在本地创建我想要的 AVD,然后将它们克隆到我的 CI 构建框来解决这个问题。在您的用例中可能并不理想,但它对我有用。【参考方案2】:要么编辑AVD
的config.ini
- 要么在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
。
【讨论】:
也许我不清楚:我需要使用像素 2,因为我们需要在此设备上进行测试。此外,此设备需要通过 avdmanager 创建,因为在 CI 环境中,没有可用于通过 Android Studio 创建虚拟设备的 UI,然后只需正确链接即可。 @hb0 我几乎无法想象,某些虚拟设备名称对 AVD 的影响最小(因为它们都是一样的)......因此,pixel
应该是等效的(如果屏幕尺寸匹配)。为什么你认为他们已经删除了它?无头运行时您甚至不会有任何设备框架,因此这是一个完全的误解。虽然仍然可以创建自定义设备,但如果屏幕尺寸/dpi 应该变化 - 或者只是连接硬件设备。
抱歉回复晚了:我们有一个使用位置更新的集成测试。此测试仅在 pixel2
类型的虚拟设备上运行,就像在普通设备上一样。我的猜测是,与其他模拟设备配置文件相比,Google 增强了此模拟器上的模拟位置服务。您确定不同配置文件之间的实现没有区别吗?你能提供一个来源吗?在这种情况下,我无法解释为什么该测试仅适用于 pixel-2 模拟器而不适用于例如在具有相同 Android API 的像素模拟器上。【参考方案3】:
我已经使用AndroidSDK/cmdline-tools/latest/bin/avdmanager
解决了这个问题。
旧的AndroidSDK/tools
文件夹已被弃用,不应再使用
【讨论】:
以上是关于像素 2 模拟器/虚拟设备不在 AVD 管理器设备列表中的主要内容,如果未能解决你的问题,请参考以下文章
Android studio 4.2 找不到模拟器、设备或 AVD 管理器
在 Android Studio 中运行 AVD 时应用程序崩溃。我正在使用 API 27 在虚拟设备像素 5x 上运行