创建和管理虚拟设备

Android 虚拟设备 (AVD) 是一种配置,用于定义您要在 Android 模拟器中模拟的 Android 手机、平板电脑、Wear OS、Android TV 或 Automotive OS 设备的特性。设备管理器是一款可从 Android Studio 启动的工具,旨在帮助您创建和管理 AVD。

如需打开新的设备管理器,请执行以下操作之一:

  • 在 Android Studio 欢迎屏幕上,依次选择 More Actions > Virtual Device Manager

从欢迎屏幕打开设备管理器

  • 打开项目后,从主菜单栏中依次选择 View > Tool Windows > Device Manager,然后点击 Create device

“New Device Manager”窗口

如果您希望使用虚拟设备以可扩容且自行管理的方式运行自动化插桩测试,请考虑使用 Gradle 管理的设备

关于 AVD

AVD 包含硬件配置文件、系统映像、存储区域、皮肤和其他属性。

建议您根据清单中的 <uses-sdk> 设置为应用可能支持的所有系统映像创建 AVD。

硬件配置文件

硬件配置文件定义了设备出厂时的特性。设备管理器预加载了特定的硬件配置文件,如 Pixel 设备,您可以根据需要定义或自定义硬件配置文件。

“Select Hardware”对话框

Play Store 列中带有 Google Play 徽标的设备定义既包含 Google Play 商店应用也具有对 Google Play 服务的访问权限,Extended controls 对话框中会显示 Google Play 标签页,其中提供了一个方便的按钮,用于在设备上更新 Google Play 服务。

具有此徽标且设备类型为“手机”的设备也符合 CTS 规范,并且可以使用包含 Play 商店应用的系统映像。

系统映像

标有 Google API 的系统映像具有对 Google Play 服务的访问权限。

“System Image”对话框

Recommended 标签页会列出推荐的系统映像。其他标签包含更完整的列表。右侧窗格介绍选定的系统映像。

如果您在系统映像旁边看到下载图标,则说明开发机器上当前未安装该映像。点击该图标即可下载系统映像。您必须连接到互联网才能下载系统映像。

目标设备的 API 级别非常重要,因为您的应用不会在 API 级别低于应用所需级别(在应用清单文件的 minSdk 属性中指定)的系统映像上运行。如需详细了解系统 API 级别与 minSdk 之间的关系,请参阅对您的应用进行版本控制

如果您的应用在清单文件中声明了 <uses-library> 元素,那么该应用就需要具备包含这个外部库的系统映像。 如需在模拟器上运行应用,请创建包含所需库的 AVD。为此,您可能需要使用适用于 AVD 平台的插件组件;例如包含 Google 地图库的 Google API 插件。

为确保应用安全并且与实体设备的体验一致,包含 Google Play 商店的系统映像已使用发布密钥签名,这意味着,您无法获得这些映像的提升权限 (root)。

如果您需要使用提升权限 (root) 来帮助您排查应用问题,您可以使用不包含 Google 应用或服务的 Android 开源项目 (AOSP) 系统映像。然后,您可以使用 adb rootadb unroot 命令在普通权限和提升权限之间切换:

  % adb shell
  emu64a:/ $
  emu64a:/ $ exit
  % adb root
  restarting adbd as root
  % adb shell
  emu64a:/ #
  emu64a:/ # exit
  % adb unroot
  restarting adbd as non root
  % adb shell
  emu64a:/ $
  emu64a:/ $ exit
  %
  

存储区域

AVD 在开发计算机中具有专用的存储区域。AVD 可存储设备用户数据,例如已安装的应用和设置以及模拟 SD 卡。您可以根据需要使用设备管理器擦除用户数据,以便相应设备具有与新设备相同的数据。

皮肤

模拟器皮肤可指定设备的外观。设备管理器提供了一些预定义的皮肤。您也可以定义自己的皮肤或者使用第三方提供的皮肤。

AVD 和应用功能

确保您的 AVD 定义包含您的应用所依赖的设备功能。如需查看可在 AVD 中定义的功能的列表,请参阅有关硬件配置文件属性AVD 属性的部分。

创建 AVD

如需创建新的 AVD,请执行以下操作:

  1. 打开设备管理器。
  2. 点击 Create Device

    系统随即会显示 Select Hardware 窗口。

    请注意,只有部分硬件配置文件包含 Play 商店。这些配置文件完全符合 CTS 规范,并且可以使用包含 Play 商店应用的系统映像。

  3. 选择硬件配置文件,然后点击 Next

    如果没看到所需的硬件配置文件,您可创建导入一个硬件配置文件,如本页中其他部分所述。

    系统随即会显示 System Image 窗口。

  4. 选择针对特定 API 级别的系统映像,然后点击 Next
  5. 系统会显示 Verify Configuration 窗口。

  6. 根据需要更改 AVD 属性,然后点击 Finish

    点击 Show Advanced Settings 以显示更多设置,如皮肤。

  7. 新 AVD 会显示在设备管理器的 Virtual 标签页中以及目标设备菜单中。

如需从副本开始创建 AVD,请执行以下操作:

  1. 从设备管理器的 Virtual 标签页中,点击菜单图标 ,然后选择 Duplicate

    系统会显示 Verify Configuration 窗口。

  2. 如果您需要在 System ImageSelect Hardware 窗口中进行更改,请点击 Previous
  3. 根据需要进行更改,然后点击完成

    AVD 会显示在设备管理器的 Virtual 标签页中。

创建硬件配置文件

设备管理器会为常见设备提供预定义的硬件配置文件,这样您就可以轻松地将其添加至您的 AVD 定义中。如果您需要定义不同的设备,则可以创建新的硬件配置文件。

您可以从头定义新的硬件配置文件,也可以从复制硬件配置文件着手。预加载的硬件配置文件无法修改。

如需从头创建新的硬件配置文件,请执行以下操作:

  1. Select Hardware 窗口中,点击 New Hardware Profile
  2. Configure Hardware Profile 窗口中,根据需要更改硬件配置文件属性

    “Configure hardware profile”对话框
  3. 点击 Finish

    您的新硬件配置文件将显示在 Select Hardware 窗口中。 您可以通过点击 Next 或点击 Cancel 返回到 Virtual 标签页或目标设备菜单,从而创建采用该硬件配置文件的 AVD

如需从副本着手创建硬件配置文件,请执行以下操作:

  1. Select Hardware 窗口中,选择一个硬件配置文件,然后点击 Clone Device,或者右键点击该硬件配置文件,然后选择 Clone

  2. Configure Hardware Profile 窗口中,根据需要更改硬件配置文件属性
  3. 点击 Finish
  4. 您的新硬件配置文件将显示在 Select Hardware 窗口中。 您可以通过点击 Next 或点击 Cancel 返回到 Virtual 标签页或目标设备菜单,从而创建采用该硬件配置文件的 AVD

修改现有 AVD

您可从设备管理器的 Virtual 标签页中对 AVD 执行以下操作:

  • 如需修改 AVD,请点击 Edit this AVD 图标 ,然后进行更改。
  • 如需删除 AVD,请点击 Menu 图标 ,然后选择 Delete
  • 如需在磁盘上显示关联的 AVD INI 和 IMG 文件,请点击 Menu 图标 ,然后选择 Show on Disk
  • 如需查看 AVD 配置详细信息(您可将其包含在提交给 Android Studio 团队的错误报告中),请点击 Menu 图标 ,然后选择 View Details

修改现有硬件配置文件

您无法修改或删除预加载的硬件配置文件,但可从 Select Hardware 窗口中对其他硬件配置文件执行以下操作:

  • 若要修改硬件配置文件,请选择相应配置文件,然后点击 Edit Device。您也可右键点击相应的硬件配置文件,然后选择 Edit。接下来,进行更改。
  • 如需删除硬件配置文件,请右键点击相应配置文件,然后选择 Delete

运行和停止模拟器,以及清除数据

Virtual 标签页中,您可对模拟器执行以下操作:

  • 如需运行使用 AVD 的模拟器,请点击 Launch 图标
  • 如需停止正在运行的模拟器,请点击 Menu 图标 ,然后选择 Stop
  • 如需清除模拟器的数据,请点击 Menu 图标 ,然后选择 Wipe Data

导入和导出硬件配置文件

Select Hardware 窗口中,您可以导入和导出硬件配置文件,如下所示:

  • 如需导入硬件配置文件,请点击 Import Hardware Profiles,然后选择您的计算机上包含相应定义的 XML 文件。
  • 如需导出硬件配置文件,请右键点击相应配置文件,然后选择 Export。指定您想要存储包含定义的 XML 文件的位置。

AVD 属性

AVD 配置指定了开发计算机与模拟器之间的交互,以及您想要在硬件配置文件中替换的属性。您可在 Verify Configuration 窗口中为 AVD 配置指定以下属性。 仅当您点击 Show Advanced Settings 后,系统才会显示带 (Advanced) 标签的属性。

AVD 配置属性可以替换硬件配置文件属性,而您在模拟器运行时设置的模拟器属性可以替换前两者。

表 1. AVD 配置属性

AVD 属性 说明
AVD 名称 输入 AVD 的名称。名称可以包含大小写字母、数字、英文句点、下划线、英文括号、短划线和空格。存储 AVD 配置的文件的名称来自 AVD 名称。
AVD ID(高级) 查看 AVD ID。AVD ID 衍生自 AVD 名称。您可以使用该 ID 从命令行引用 AVD。
硬件配置文件 点击 Change 可从 Select Hardware 窗口中改选一个不同的硬件配置文件。
系统映像 点击 Change 可从 System Image 窗口中改选一个不同的系统映像。 需要有效的互联网连接才能下载新映像。
启动方向

为初始模拟器方向选择一个选项:

  • Portrait - 高度大于宽度的竖屏。
  • 横向:宽度大于高度的横向屏幕

只有在硬件配置文件中受支持的选项才会启用。在模拟器中运行 AVD 时,如果硬件配置文件支持竖屏和横屏,那么您可以更改方向。

相机(高级)

为任何已启用的摄像头选择一个选项。模拟设置和 VirtualScene 设置会产生一个由软件生成的图片,而摄像头设置会使用开发计算机的摄像头拍照

仅当硬件配置文件中支持摄像头时,摄像头选项才可用。不适用于 Wear OS、Android TV 或 Google TV。

网络:速度(高级)

选择网络协议以确定数据传输的速度:

  • GSM - Global System for Mobile Communications
  • HSCSD - High-Speed Circuit-Switched Data
  • GPRS - Generic Packet Radio Service
  • EDGE - Enhanced Data rates for GSM Evolution
  • UMTS - Universal Mobile Telecommunications System
  • HSDPA - High-Speed Downlink Packet Access
  • LTE - Long-Term Evolution
  • Full (default) - 以计算机允许的最大速度传输数据。
网络:延迟(高级) 选择网络协议以设置协议将数据包从一点传输至另一点所需的时间。
模拟性能:图形

选择图形在模拟器中的渲染方式:

  • Hardware - 使用计算机显卡更快地渲染。
  • Software - 在软件中模拟图形,这种方式在显卡中的渲染遇到问题时非常有用。
  • Automatic - 由模拟器根据显卡决定最佳选项。
模拟性能:启动选项(高级)

    选择 AVD 启动方式:

  • 冷启动:设备每次都会在设备关机状态下开机。
  • 快速启动:设备会从保存的快照中加载设备状态。
模拟性能:多核 CPU(高级) 选择要将计算机上的多少个处理器核心用于模拟器。使用更多的处理器内核可加快模拟器的运行速度。
内存和存储空间:RAM(高级) 替换由硬件制造商设定的设备端 RAM 容量。增加 RAM 大小会在计算机上占用更多资源,但会支持更快的模拟器操作。输入 RAM 大小,然后选择以下单位之一:B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或者 TB(太字节)。
内存和存储空间:虚拟机堆(高级) 替换硬件制造商设定的虚拟机堆大小。输入堆大小,然后选择以下单位之一:B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或者 TB(太字节)。
内存和存储空间:内部存储空间(高级) 替换由硬件制造商设定且不可移动的设备端可用内存空间量。输入大小,然后选择以下单位之一:B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或者 TB(太字节)。
内存和存储空间:SD 卡(高级)

指定在设备上可用于存储数据的可移动内存空间的大小。

若要使用由 Android Studio 管理的虚拟 SD 卡,请选择 Studio-managed,输入大小,然后选择以下单位之一:B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或者 TB(太字节)。如果使用相机,建议最小内存为 100 MB。

如需管理文件中的空间,请选择 External file,然后点击 ... 指定文件和位置。

如需了解详情,请参阅 mksdcardAVD 数据目录

设备框架:启用设备框架 选择此选项可以在模拟真实设备外观的模拟器窗口周围启用框架。
自定义皮肤定义(高级) 选择一款可以控制设备在模拟器中显示样式的皮肤。指定相对于分辨率而言过大的屏幕意味着屏幕画面会被切断,您将无法看到完整的屏幕。如需了解详情,请参阅创建模拟器皮肤部分。
键盘:启用键盘输入(高级) 选择此选项可使用硬件键盘与模拟器互动。此选项在 Wear OS 和 Android TV 上处于停用状态。

硬件配置文件属性

您可在 Configure Hardware Profile 窗口中为硬件配置文件指定以下属性。AVD 配置属性可以替换硬件配置文件属性,而您在模拟器运行时设置的模拟器属性可以替换前两者。

设备管理器包含的预定义硬件配置文件无法修改。不过,您可以复制配置文件并修改副本。

某些设备类型会停用某些属性。例如,“Round”属性仅适用于 Wear OS 设备。

表 2. 硬件配置文件的配置属性

硬件配置文件属性 说明
设备名称 输入硬件配置文件的名称。 名称可以包含大小写字母、数字、英文句点、下划线、英文括号和空格。存储硬件配置文件的文件的名称来自硬件配置文件名称。
设备类型

选择下列其中一项:

  • 手机/平板电脑
  • Wear OS
  • Android TV
  • Google TV
  • ChromeOS 设备
  • Android Automotive
屏幕:屏幕尺寸 指定屏幕的物理尺寸(以英寸为单位),按照对角线测量。 如果尺寸大于您的计算机屏幕,启动时尺寸会缩小。
屏幕:屏幕分辨率 输入宽度和高度(以像素为单位),以指定模拟屏幕上的总像素数。
屏幕:圆形 如果设备(如 Wear OS 设备)采用圆形屏幕,请选择此选项。
存储设备:RAM 输入设备的 RAM 大小,然后选择以下单位之一:B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或者 TB(太字节)。
输入:具有硬件按钮(返回/主屏幕/菜单) 如果您的设备具有硬件导航按钮,请选择此选项。如果这些按钮仅在软件中实现,请取消选择此选项。如果您选择此选项,屏幕上将不会显示按钮。无论是哪种情况,您都可以使用模拟器侧边栏来模拟按下按钮的操作。
输入:具有硬件键盘 如果您的设备具有硬件硬盘,请选择此选项。如果没有,请取消选择此选项。如果您选择此选项,屏幕上将不会显示键盘。无论是哪种情况,您都可以使用计算机键盘向模拟器发送按键。
输入:导航样式

选择下列其中一项:

  • None - 无硬件控件。通过软件进行导航。
  • D-pad:方向键支持。
  • Trackball
  • Wheel

这些选项是针对设备本身的硬件控件。不过,由外部控制器发送至设备的事件也是如此。

支持的设备状态

选择一个或两个选项:

  • Portrait - 高度大于宽度的竖屏。
  • 横向:宽度大于高度的横向屏幕

您必须选择至少 1 个选项。如果您同时选择了这两个选项,您在模拟器中可以在两个方向之间切换。

相机

如需启用相机,请选择一个或两个选项:

  • Back-Facing Camera - 镜头背朝用户的后置摄像头。
  • Front-Facing Camera:镜头朝向用户

如果启用了摄像头,您可以使用开发机器的摄像头或由模拟器提供的照片来模拟拍照,具体取决于您在 AVD 配置中选择的选项。

传感器:加速度计 如果设备具有可帮助其确定屏幕方向的硬件,请选择此选项。
传感器:陀螺仪 如果设备具有可检测旋转或扭曲的硬件,请选择此选项。与加速度计结合使用时,陀螺仪可以更顺畅地检测方向并支持六轴方向系统。
传感器:GPS 如果设备具有支持全球定位系统 (GPS) 卫星导航系统的硬件,请选择此选项。
传感器:近程传感器 如果设备具有可检测通话过程中设备靠近用户脸部时停止从屏幕输入内容的硬件,请选择此选项。
默认皮肤 选择一款可以控制设备在模拟器中显示样式的皮肤。指定相对于分辨率而言尺寸过大的屏幕意味着屏幕画面会被切断,您将无法看到完整的屏幕。如需了解详情,请参阅下面有关创建模拟器皮肤的部分。

创建模拟器皮肤

Android 模拟器皮肤是定义模拟器显示画面的视觉和控制元素的一系列文件。如果 AVD 设置中可用的皮肤定义无法满足您的要求,您可以创建自己的自定义皮肤定义,然后将其应用到 AVD。

每个模拟器皮肤均包含:

  • hardware.ini 文件
  • 用于受支持的屏幕方向和物理配置的布局文件
  • 用于显示元素(如背景、键和按钮)的图片文件

若要创建和使用自定义皮肤,请按以下步骤操作:

  1. 创建一个用于保存皮肤配置文件的目录。
  2. 在一个名为 layout 的文本文件中定义皮肤的视觉外观。此文件可以定义皮肤的多个特征,如大小和特定按钮的图片资源。例如:

    parts {
        device {
            display {
                width   320
                height  480
                x       0
                y       0
            }
        }
    
        portrait {
            background {
                image background_port.png
            }
    
            buttons {
                power {
                    image  button_vertical.png
                    x 1229
                    y 616
                }
            }
        }
        ...
    }
    

  3. 将设备映像的位图文件添加到同一目录。
  4. 在设备设置的 INI 文件中指定硬件特有的其他设备配置,例如 hw.keyboardhw.lcd.density
  5. 将皮肤文件夹中的文件归档,然后选择归档文件作为自定义皮肤。

如需详细了解如何创建模拟器皮肤,请参阅工具源代码中的 Android 模拟器皮肤文件规范