使用 Android 模拟器虚拟设备

您可以使用 Android 模拟器创建运行自己的自定义 Android 系统映像的 Android 设备模拟。此外,您可以向 Android 模拟器模拟添加多显示屏支持。

Android 模拟器架构

Android 模拟器在名为 Android 虚拟设备 (AVD) 的虚拟机中运行 Android 操作系统。每个 AVD 包含完整的 Android 软件堆栈,就如同在实体设备上运行。图 1 展示了 Android 模拟器的概要架构图。如需详细了解 Android 模拟器,请参阅在 Android 模拟器上运行应用

Android 模拟器架构。

图 1. Android 模拟器架构。

构建 AVD 映像

每个 AVD 都包含一个 Android 系统映像,该映像会在此 AVD 中运行。AVD 管理器包含一些系统映像。您可以从源代码构建自定义的 AVD 系统映像,并创建设备模拟以运行这些映像。

如需构建并运行 AVD 系统映像,请按以下步骤操作:

  1. 下载 Android 源代码:

    mkdir aosp-main; cd aosp-main
    repo init -u
    repo sync -j24

如果要构建其他 Android 版本,可以在 Android 公开代码库中查找相应的分支名称。它们会映射到 Android 代号、标记和 build 号

  1. 构建 AVD 系统映像。这与编译 Android 设备系统映像的流程相同。例如,如需构建 x86 64 位 AVD,请运行以下命令:

    source ./build/envsetup.sh
    lunch sdk_phone_x86_64
    make -j32
  2. 在 Android 模拟器中运行 AVD 系统映像:

    emulator

如需详细了解如何运行 Android 模拟器,请参阅命令行启动选项。图 2 显示了运行 AVD 的 Android 模拟器示例。

运行 AVD 的 Android 模拟器。

图 2. 运行 AVD 的 Android 模拟器。

共享 AVD 系统映像以供他人配合使用 Android Studio

您可以按以下步骤与他人共享您的 AVD 系统映像。他们可以将您的 AVD 系统映像与 Android Studio 配合使用来开发和测试应用。

  1. 制作附加 sdksdk_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
  2. 将文件 sdk-repo-linux-system-images-eng.[username].zip 托管在用户可以访问的位置,并获取其网址以作为 AVD 系统映像网址使用。

  3. 对于 Android 12 及更低版本,请相应地修改 repo-sys-img.xml

    • <sdk:url> 更新为您的 AVD 系统映像网址
    • 参阅 sdk-sys-img-03.xsd 以了解对此文件的其他更新。
    • repo-sys-img.xml 托管在用户可以访问的位置,并获取其网址以作为自定义更新网站网址使用。

如需使用自定义 AVD 映像,请在 SDK 管理器中执行以下操作:

  1. 自定义更新网站网址添加为 SDK 更新网站

    此操作会将您的自定义 AVD 系统映像添加到“系统映像”页面中。

  2. 通过下载并选择自定义 AVD 系统映像来创建 AVD

添加多显示屏支持

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
    

您可以从以下来源查找最新的模拟器功能和版本信息: