您可以使用 Android 模拟器创建 Android 设备模拟,以运行您自己的自定义 Android 系统映像。此外,您可以为 Android 模拟器模拟添加多显示器支持。
Android 模拟器架构
Android 模拟器在名为 Android 虚拟设备 (AVD) 的虚拟机中运行 Android 操作系统。每个 AVD 都包含完整的 Android 软件堆栈,并且其运行方式与在物理设备上运行的方式相同。图 1 说明了 Android 模拟器的高级架构。如需详细了解该模拟器,请参阅在 Android 模拟器上运行应用。
图 1. Android 模拟器架构。
构建 AVD 映像
每个 AVD 都包含一个 Android 系统映像,该映像在该 AVD 中运行。AVD 管理器包含一些系统映像。您可以从源代码构建自定义 AVD 系统映像,并创建设备模拟来运行它们。
要构建和运行 AVD 系统映像,请执行以下操作
下载 Android 源代码
mkdir aosp-main; cd aosp-main
repo init -u
repo sync -j24
如果您想构建其他 Android 版本,可以在公共 Android 代码库中找到其分支名称。它们映射到Android 代号、标记和 build 编号。
构建 AVD 系统映像。此过程与构建 Android 设备系统映像的过程相同。例如,要构建 x86 64 位 AVD
source ./build/envsetup.sh
lunch sdk_phone_x86_64
make -j32
在 Android 模拟器中运行 AVD 系统映像
emulator
如需详细了解如何运行模拟器,请参阅命令行启动选项。图 2 显示了运行 AVD 的 Android 模拟器的示例
图 2. 运行 AVD 的 Android 模拟器。
共享 AVD 系统映像,供他人与 Android Studio 结合使用
按照以下说明共享您的 AVD 系统映像,供他人使用。他们可以将您的 AVD 系统映像与 Android Studio 结合使用,以开发和测试应用。
创建额外的
sdk
和sdk_repo
软件包对于 Android 13 及更高版本,请使用
emu_img_zip
命令$ make emu_img_zip
这会生成一个
sdk-repo-linux-system-images-eng.[username]].zip
文件。对于 Android 12 及更低版本,请使用
sdk_repo
命令$ make -j32 sdk sdk_repo
make sdk sdk_repo
命令会在aosp-main/out/host/linux-x86/sdk/sdk_phone_x86
下创建两个文件sdk-repo-linux-system-images-eng.[username].zip
repo-sys-img.xml
将文件
sdk-repo-linux-system-images-eng.[username].zip
托管在您的用户可以访问的某个位置,并获取其网址以用作AVD 系统映像网址。对于 Android 12 及更低版本,请相应地修改
repo-sys-img.xml
- 将
<sdk:url>
更新为您的AVD 系统映像网址。 - 请参阅 sdk-sys-img-03.xsd,了解有关该文件的其他更新。
- 将
repo-sys-img.xml
托管在您的用户可以访问的某个位置,并获取其网址以用作自定义更新站点网址。
- 将
要使用自定义 AVD 映像,请在 SDK 管理器中执行以下操作
添加多显示器支持
Android 10 增强了多显示器功能,以更好地支持更多用例,例如汽车和桌面模式。Android 模拟器也支持多显示器模拟。因此,您可以创建特定的多显示器环境,而无需设置真实的硬件。
您可以通过进行以下更改或从这些 CL 中挑选更改,为 AVD 添加多显示器支持。
通过将以下行添加到文件
build/target/product/sdk_phone_x86.mk
,将多显示器提供程序添加到 build 中PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST := \ system/lib/libemulator_multidisplay_jni.so \ system/lib64/libemulator_multidisplay_jni.so \ system/priv-app/MultiDisplayProvider/MultiDisplayProvider.apk \ PRODUCT_PACKAGES += MultiDisplayProvider
通过将以下行添加到文件
device/generic/goldfish/data/etc/advancedFeatures.ini
,启用多显示器功能标记MultiDisplay = on
您可以从以下来源找到最新的模拟器功能和版本信息