为方便您使用 Android 虚拟设备 (AVD),Android 模拟器支持图形界面 (GUI) 和命令行界面 (CLI)。您可以根据自身环境选择最佳工作流程。
- 创建和管理虚拟设备 GUI 是为大多数应用开发者和用户提供的一款简单工具。
- 从命令行启动模拟器为高级用户和实现自动化提供了一种灵活的方式。例如,它支持使用多个 AVD 或设置连续测试和持续集成。如需开始使用,请参阅工具中的示例。
构建 AOSP 汽车 AVD
构建 AOSP 汽车 AVD 的流程类似于为手机构建 AVD 映像(例如 aosp_car_x86_64):
- 如需设置开发环境并标识一个分支,请参阅源代码控制工具。然后查看下载源代码一文:
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 - 构建 AVD 映像:
. build/envsetup.sh && lunch sdk_car_x86_64-userdebug && m -j32
- 运行 AVD 映像(根据需要附加其他命令行启动选项):
emulator &
例如:
图 1. Android 虚拟模拟器屏幕
有关此流程的注意事项:
创建汽车 AVD
添加新汽车 AVD 的流程几乎与添加新设备完全相同。例如,1660554 可用于创建一个新的 avd_car
AVD。
如需创建汽车 AVD,请执行以下操作:
- 根据需要,创建公司和设备文件夹。本示例使用的是
$ANDROID_BUILD_TOP/device/google_car/avd_car
。 - 创建产品 makefile
avd_car.mk
(用于定义如何构建 AVD)。 - 创建一个设备文件夹
avd_car_device
,其中包含BoardConfig.mk
和source.properties
。 - 将新
makefile
和lunch
新选项添加到AndroidProducts.mk
中。 - 如需构建并运行新的
avd_car
AVD,请执行以下操作:. build/envsetup.sh && lunch acar-userdebug && m -j32 && emulator &
打包 AVD 映像 zip 文件
您可以打包 AVD 并与他人共享,也可以在其他计算机上使用该 AVD。使用 emu_img_zip.mk 生成 AVD 映像 zip 文件:
- 构建好 AVD 后,将
emu_img_zip
设为目标:m emu_img_zip
- 以
sdk-repo-linux-system-images
为前缀的 AVD 映像 zip 文件,是在名为$ANDROID_PRODUCT_OUT
的文件夹中创建的。
构建 AVD 内核
AVD 内核与其他 Android 内核类似,都是预构建映像。通常,您可以使用标准的 goldfish 内核预构建映像,因为它存在于每个 Android 版本之中。
如需测试内核变更,请执行以下操作:
- 运行以下一系列指令:
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/
- 根据 AVD makefile,替换代码库中的内核二进制文件。例如,在 x86_64-vendor.mk 中加入 x86_64-kernel.mk。
内核代码和配置的位置如下所示:
项目 | 值 |
---|---|
分支 | common-android11-5.4 (在 Android 11 中使用时) |
清单 | kernel/manifest/common-android11-5.4 |
common-modules/virtual-device | kernel/common-modules/virtual-device/android11-5.4 |
内核 | kernel/common/android11-5.4 |
创建新的设备配置文件
如需让用户能够在 Android Studio AVD 管理器中创建特定的 AVD,请参阅创建和管理虚拟设备。设备制造商可以使用 AVD 映像中包含的 devices.xml
文件来定义自己的硬件规格(例如屏幕尺寸和 DPI)。
- 有关示例,请参阅
automotive.xml
中的车载设备配置文件。 - 对于 HMI 开发或原型设计,您可以将多个设备添加到同一 AVD 映像的文件中。
- 将 OEM AVD 映像 zip 文件中的文件加入
[ABI]
文件夹(例如x86_64
)。 - 设备制造商还可以创建模拟器皮肤。例如,定义其他硬件按钮,以提供高保真度的用户体验。这不仅适用于开发者工作流程,也适用于用户体验研究和评价等其他任务。
创建 AVD 映像 XML 文件
设备制造商可以为 Android Studio 创建一个 AVD 映像 XML 文件,以供下载。
- 有关示例,请参阅 AAOS AVD 映像 XML 文件
sys-img2-1.xml
。 - 设备制造商可以使用 Android 模拟器的许可,(利用诚信机制)为目标用户定义自己的 OEM AVD 许可协议。如果 Android Studio 拥有此类许可,更易获得用户共识。
如需创建映像,请执行以下操作:
- 准备 AVD 映像 zip 文件。
- 解压缩
${ANDROID_PRODUCT_OUT}/sdk-repo-linux-system-images-*.zip
。 - 将
devices.xml
添加到x86_64
文件夹,然后将该文件压缩为 zip 文件。例如,压缩为oem_avd_img_x86_64.zip
。 - 更新
oem-sys-img2-1.xml
。 - 更新 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 插件网址格式为:https://storage.googleapis.com/$BUCKET_NAME/oem-sys-img2-1.xml
。
例如,如果 BUCKET_NAME 为 aaos-avd,则网址为 https://storage.googleapis.com/aaos-avd/oem-sys-img2-1.xml
。
与 Android Studio 用户共享 AVD 映像
您可以提供 SDK 插件 XML 文件,以便用户下载 AVD 映像并通过 Android Studio 使用您的 AVD。 如需了解详情,请参阅更新 IDE 和 SDK 工具。
如需从网络下载 AVD,请执行以下操作:
- 在服务器上托管映像 zip 文件和 XML 文件。
- 为目标用户提供相应的网址。
- (可选)借助用户名和密码限制对其的访问权限。
或者,如需加快开发速度,请将 AVD 下载到本地目录:
- 将 XML 文件以及 XML 文件中指定的所有工件(例如所有的 AVD 映像 zip 文件)保存到名为
ADDON_DIR
的文件夹中。 - 将网址指定为
file://$ADDON_DIR/oem-sys-img2-1.xml
。