您可以使用 Android 模拟器创建运行自己的自定义 Android 系统映像的 Android 设备模拟。您还可以共享您的自定义 Android 系统映像,以便他人可以运行相应模拟。此外,您可以向 Android 模拟器模拟添加多显示屏支持。
Android 模拟器架构
借助 Android 模拟器,您可以在 Windows、macOS 或 Linux 计算机上运行 Android 设备模拟。Android 模拟器在名为 Android 虚拟设备 (AVD) 的虚拟机中运行 Android 操作系统。AVD 包含完整的 Android 软件堆栈,就如同在物理设备上运行。图 1 是 Android 模拟器的高级架构图。如需详细了解 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 32 位 AVD,请运行以下命令:
mkdir aosp-main; cd aosp-main
source ./build/envsetup.sh
lunch sdk_phone_x86
make -j32
如果您想构建 x86 64 位 AVD,则需针对 64 位目标运行
lunch
:lunch sdk_phone_x86_64
在 Android 模拟器中运行 AVD 系统映像:
emulator
如需详细了解如何运行 Android 模拟器,请参阅命令行启动选项。图 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 管理器中执行以下操作:
-
此操作会将您的自定义 AVD 系统映像添加到“系统映像”页面中。
通过下载并选择自定义 AVD 系统映像来创建 AVD。
添加多显示屏支持
Android 10 增强了多显示屏 (MD) 功能以更好地支持更多用例,例如自动模式和桌面模式。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
您可以从以下来源查找最新的模拟器功能和版本信息: