Android虚拟设备作为开发平台

为了使用 Android 虚拟设备 (AVD), Android 模拟器支持图形用户界面 (GUI) 和命令行界面 (CLI)。您可以选择适合您环境的最佳工作流程。

  • 创建和管理虚拟设备GUI 是为大多数应用程序开发人员和用户提供的简单工具。
  • 从命令行启动模拟器为高级用户和自动化提供了一种灵活的方式。例如,使用多个 AVD 或设置持续测试和持续集成。要开始使用,请参阅工具中的示例)。

使用预构建启动 AOSP Car AVD

要使用预构建的 AOSP Car AVD 快速启动和测试,请使用开源脚本从ci.android.com下载并启动模拟器版本。该脚本已在 macOS 和 Linux 上进行了测试。

您需要Curl才能使用此脚本。

运行脚本:

  1. launch_emu.sh脚本内容复制到本地文件,假设您使用launch_emu.sh作为本地文件名。
  2. 使您的本地脚本可执行。例如,运行chmod +x ./launch_emu.sh
  3. 通过使用./launch_emu.sh -h运行脚本来检查可用选项。
  4. ci.android.com上,转到aosp-main-throttled分支并选择最近的版本,其中sdk_car_x86_64为绿色。例如,11370359。如果您没有看到版本信息,请退出您的 Google 帐户,然后重试。
  5. 使用构建 ID 下载并安装与模拟器相关的二进制文件。例如, ./launch_emu.sh -i -a 11370359
  6. 之后,您可以使用./launch_emu.sh启动下载并安装的模拟器(不要使用-i-a选项)。
  7. 要下载并安装另一个构建 ID,请运行./launch_emu.sh -c清理您的工作区,然后重复上面的步骤 4 和步骤 5。

要在启动模拟器时指定 Android 模拟器命令行启动选项,请使用-v选项。例如:

  ./launch_emu.sh -v “-cores 4 -memory 6144 -no-snapshot"

构建 AOSP 汽车 AVD

构建 AOSP Car AVD 的过程类似于为手机构建 AVD 映像(例如,aosp_car_x86_64):

  1. 要设置开发环境并识别分支,请参阅源代码管理工具。然后查看下载源代码
    ANDROID_BRANCH="android12L-release"
    REPO_URL="https://android.googlesource.com/platform/manifest"
    mkdir $ANDROID_BRANCH && cd $ANDROID_BRANCH && repo init -u $REPO_URL -b $ANDROID_BRANCH --partial-clone && repo sync -c -j8
  2. 构建 AVD 映像:
    . build/envsetup.sh && lunch sdk_car_x86_64-userdebug && m -j32
  3. 运行 AVD 映像(根据需要附加其他命令行启动选项):
    emulator &

    例如:

    图 1. Android 虚拟模拟器屏幕

    关于此过程的注意事项:

    • 由于构建过程与为物理设备构建 Android 所需的过程相同,因此需要一些时间来下载源代码,然后进行构建。
    • 要在其他分支上工作,请将$ANDROID_BRANCH设置为另一个分支/标签
    • AVD 图像(例如system.img )是在$ANDROID_PRODUCT_OUT中构建的。要了解有关关键图像的更多信息,请参阅AVD 系统目录
    • 请参阅README文件,了解如何使用 Android 树中的预构建模拟器二进制文件来运行模拟器。

创建汽车 AVD

添加新车 AVD 与添加新设备几乎相同。例如, 1660554创建一个新的avd_car AVD。

创建汽车 AVD:

  1. 根据需要创建公司和设备文件夹。此示例使用$ANDROID_BUILD_TOP/device/google_car/avd_car
  2. 创建产品 makefile avd_car.mk ,它定义如何构建 AVD。
  3. 创建设备文件夹avd_car_device ,其中包含BoardConfig.mksource.properties
  4. 将新的makefile和新的lunch选择添加到AndroidProducts.mk
  5. 构建并运行新的avd_car AVD:
    . build/envsetup.sh && lunch acar-userdebug && m -j32 && emulator &
您现在已准备好在新 AVD 上对大多数 HMI 和应用程序功能进行原型设计。

打包 AVD 图像 zip 文件

您可以打包并与其他人共享您的 AVD,或在另一台计算机上使用它。使用emu_img_zip.mk生成 AVD 图像 zip 文件:

  1. 构建 AVD 后,将emu_img_zip设置为目标:
    m emu_img_zip
  2. AVD 映像 zip 文件以sdk-repo-linux-system-images为前缀,在名为$ANDROID_PRODUCT_OUT的文件夹中创建。

构建 AVD 内核

AVD 内核与其他 Android 内核类似,都是预构建的映像。通常,您可以使用每个 Android 版本中的标准 goldfish 内核预构建映像。

要试验内核更改:

  1. 运行以下一系列指令:
    mkdir goldfish-kernel-54
    cd goldfish-kernel-54
    repo init -u https://android.googlesource.com/kernel/manifest -b
    common-android11-5.4
    repo sync
    BUILD_CONFIG=common/build.config.gki.x86_64 build/build.sh
    BUILD_CONFIG=common-modules/virtual-device/build.config.goldfish.x86_64
    build/build.sh
    ls -l ./out/android11-5.4/dist/
    
  2. 根据 AVD makefile 替换代码库中的内核二进制文件。例如, x86_64-vendor.mk包含x86_64-kernel.mk

内核代码和配置位于以下位置:

物品价值
分支common-android11-5.4 (在Android 11中使用)
显现kernel/manifest/common-android11-5.4
通用模块/虚拟设备kernel/common-modules/virtual-device/android11-5.4
核心kernel/common/android11-5.4

创建新的设备配置文件

要使用户能够在 Android Studio AVD Manager 中创建特定的 AVD,请参阅创建和管理虚拟设备。设备制造商可以通过使用 AVD 映像中包含的devices.xml文件来定义自己的硬件规格,例如屏幕尺寸和 DPI。

  • 例如,请参阅automotive.xml中的汽车设备配置文件。
  • 对于 HMI 开发或原型设计,可以将多个设备添加到同一 AVD 映像的文件中。
  • 将该文件包含在[ABI]文件夹中的 OEM AVD 映像 zip 文件中。例如,作为x86_64
  • 设备制造商还可以创建模拟器皮肤。例如,定义额外的硬件按钮以获得更高保真度的用户体验。这不仅对开发人员工作流程有用,而且对用户体验研究和审查等其他任务也有用。

创建 AVD 图像 XML 文件

设备制造商可以创建 AVD 图像 XML 文件以供 Android Studio 下载。

  • 例如,请参阅 AAOS AVD 图像 XML 文件sys-img2-1.xml
  • 设备制造商可以为其目标用户(使用荣誉系统)定义自己的 OEM AVD 许可协议,并获得 Android 模拟器的许可。当包含此类许可证时,Android Studio 会获得用户共识。

创建图像:

  1. 准备 AVD 图像 zip 文件。
  2. 解压${ANDROID_PRODUCT_OUT}/sdk-repo-linux-system-images-*.zip
  3. devices.xml添加到x86_64文件夹,然后将该文件压缩为 zip 文件。例如,作为oem_avd_img_x86_64.zip
  4. 更新oem-sys-img2-1.xml
  5. 更新 zip 文件名、大小和 shasum( tools中提供了示例 XML 文件)。

例如,要在 Google Cloud Storage上托管 AVD,请参阅创建存储桶

要上传 AVD 并使之可供公开访问,请参阅公开数据

BUCKET_NAME="aaos-avd"
gsutil mb gs://$BUCKET_NAME
gsutil cp oem_avd_img_x86_64.zip gs://$BUCKET_NAME
gsutil cp oem-sys-img2-1.xml gs://$BUCKET_NAME
gsutil iam ch allUsers:objectViewer gs://$BUCKET_NAME

AVD 图像 SDK 附加 URL 格式如下: https://storage.googleapis.com/$BUCKET_NAME/oem-sys-img2-1.xml 。例如,如果 BUCKET_NAME 为 aaos-avd,则 URL 为: https://storage.googleapis.com/aaos-avd/oem-sys-img2-1.xml

与 Android Studio 用户共享 AVD 映像

为了让您的用户可以下载 AVD 图像并通过 Android Studio 使用您的 AVD,您可以提供 SDK 附加 XML 文件。详细信息请参见更新IDE和SDK工具

要从网络下载 AVD:

  1. 在服务器上托管图像 zip 文件和 XML 文件。
  2. 向您的目标用户提供 URL。
  3. 可选)通过用户名和密码限制访问。

或者,为了加快开发速度,请将 AVD 下载到本地目录:

  1. 将 XML 文件和 XML 文件中指定的所有工件保存到名为ADDON_DIR文件夹(例如,所有 AVD 图像 zip 文件)。
  2. 将 URL 指定为file://$ADDON_DIR/oem-sys-img2-1.xml