【问题标题】:Pixel 2 Emulator / Virtual Device not in AVD manager device list像素 2 模拟器/虚拟设备不在 AVD 管理器设备列表中
【发布时间】: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"

【问题讨论】:

    标签: android android-studio avd-manager


    【解决方案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 解决了这个问题。

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

    【讨论】:

      猜你喜欢
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 2012-11-22
      • 2016-05-21
      • 1970-01-01
      相关资源
      最近更新 更多