像素 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】:

要么编辑AVDconfig.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 解决了这个问题。

您可以从这里安装新工具:https://developer.android.com/studio/command-line 或来自 Android Studio:

旧的AndroidSDK/tools 文件夹已被弃用,不应再使用

【讨论】:

以上是关于像素 2 模拟器/虚拟设备不在 AVD 管理器设备列表中的主要内容,如果未能解决你的问题,请参考以下文章

Android studio 4.2 找不到模拟器、设备或 AVD 管理器

缺少 Android 虚拟设备管理器选项

未启用 AVD 硬件按钮

创建设备不起作用 - Eclipse AVD 管理器

缺少“内核-qemu”。 - AVD 管理器

在 Android Studio 中运行 AVD 时应用程序崩溃。我正在使用 API 27 在虚拟设备像素 5x 上运行