创建和管理虚拟设备

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

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

  • 从 Android Studio 欢迎屏幕中,选择 更多操作 > 虚拟设备管理器

Opening the Device Manager from the Welcome screen

  • 打开项目后,从主菜单栏中选择 视图 > 工具窗口 > 设备管理器,然后点击 +,再点击 创建虚拟设备

New Device Manager window

创建设备后,您将能够在设备管理器面板上看到所有设备的列表。

Device Manager list

如果您想使用虚拟设备以可扩展和自管理的方式运行自动化插桩测试,请考虑使用 Gradle Managed Devices

关于 AVD

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

我们建议您为您的应用可能支持的每个系统映像创建一个 AVD,具体取决于您清单中的 <uses-sdk> 设置。

硬件配置文件

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

The Select Hardware dialog

Play 商店列中标有 Google Play 徽标的设备定义包含 Google Play 商店应用,并且可以访问 Google Play 服务,包括扩展控件对话框中的Google Play标签页,该标签页提供了一个方便的按钮用于更新设备上的 Google Play 服务。

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

系统映像

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

The System Image
dialog

推荐标签页列出了推荐的系统映像。其他标签页包含更完整的列表。右侧窗格描述了选定的系统映像。

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

目标设备的 API 级别很重要,因为您的应用不会在 API 级别低于应用要求的系统映像上运行,如应用清单文件中的 minSdk 属性所指定。有关系统 API 级别和 minSdk 之间关系的更多信息,请参阅为您的应用版本化

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

为确保应用安全和与物理设备一致的体验,包含 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 在您的开发计算机上有一个专用的存储区域。它存储设备用户数据,例如已安装的应用和设置,以及模拟的 SD 卡。如果需要,您可以使用设备管理器擦除用户数据,使设备拥有与新设备相同的数据。

皮肤

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

AVD 和应用功能

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

创建 AVD

要创建新的 AVD

  1. 打开设备管理器。
  2. 点击 创建设备

    出现选择硬件窗口。

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

  3. 选择硬件配置文件,然后点击 下一步

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

    出现系统映像窗口。

  4. 选择特定 API 级别的系统映像,然后点击 下一步
  5. 出现验证配置窗口。

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

    点击 显示高级设置 以显示更多设置,例如皮肤。

  7. 新 AVD 显示在设备管理器的虚拟标签页和目标设备菜单中。

要从副本开始创建 AVD

  1. 在设备管理器的虚拟标签页中,点击菜单 并选择 复制

    出现验证配置窗口。

  2. 如果您需要在系统映像选择硬件窗口中进行更改,请点击 上一步
  3. 进行所需的任何更改,然后点击 完成

    AVD 显示在设备管理器的虚拟标签页中。

创建硬件配置文件

设备管理器为常用设备提供预定义的硬件配置文件,以便您可以轻松地将它们添加到 AVD 定义中。如果您需要定义不同的设备,可以创建新的硬件配置文件。

您可以从头开始定义新的硬件配置文件,或将现有硬件配置文件复制作为起点。预加载的硬件配置文件不可编辑。

要从头开始创建新的硬件配置文件

  1. 选择硬件窗口中,点击 新建硬件配置文件
  2. 配置硬件配置文件窗口中,根据需要更改硬件配置文件属性

    The Configure hardware profile dialog
  3. 点击 完成

    您的新硬件配置文件将显示在选择硬件窗口中。您可以通过点击 下一步 创建使用该硬件配置文件的 AVD,或者点击 取消 返回到虚拟标签页或目标设备菜单。

要以副本作为起点创建硬件配置文件

  1. 选择硬件窗口中,选择一个硬件配置文件并点击 克隆设备,或者右键点击一个硬件配置文件并选择 克隆

  2. 配置硬件配置文件窗口中,根据需要更改硬件配置文件属性
  3. 点击 完成
  4. 您的新硬件配置文件将显示在选择硬件窗口中。您可以通过点击 下一步 创建使用该硬件配置文件的 AVD,或者点击 取消 返回到虚拟标签页或目标设备菜单。

编辑现有 AVD

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

  • 要编辑 AVD,请点击编辑此 AVD 并进行更改。
  • 要删除 AVD,请点击菜单 并选择 删除
  • 要显示磁盘上关联的 AVD INI 和 IMG 文件,请点击菜单 并选择 在磁盘上显示
  • 要查看可包含在向 Android Studio 团队提交的 Bug 报告中的 AVD 配置详细信息,请点击菜单 并选择 查看详细信息

编辑现有硬件配置文件

您无法编辑或删除预加载的硬件配置文件,但您可以从选择硬件窗口对其他硬件配置文件执行以下操作:

  • 要编辑硬件配置文件,请选择它并点击 编辑设备。您也可以右键点击硬件配置文件并选择 编辑。然后进行更改。
  • 要删除硬件配置文件,请右键点击它并选择 删除

运行和停止模拟器并清除数据

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

  • 要运行使用 AVD 的模拟器,请点击启动
  • 要停止正在运行的模拟器,请点击菜单 并选择 停止
  • 要清除模拟器的数据,请点击菜单 并选择 擦除数据

导入和导出硬件配置文件

选择硬件窗口中,您可以按如下方式导入和导出硬件配置文件:

  • 要导入硬件配置文件,请点击 导入硬件配置文件 并选择计算机上包含定义的 XML 文件。
  • 要导出硬件配置文件,请右键点击它并选择 导出。指定要存储包含定义的 XML 文件的位置。

AVD 属性

AVD 配置指定了开发计算机与模拟器之间的交互,以及您想要覆盖硬件配置文件中的属性。您可以在验证配置窗口中为 AVD 配置指定以下属性。标有(高级)的属性仅在您点击显示高级设置时显示。

AVD 配置属性会覆盖硬件配置文件属性,而您在模拟器运行时设置的模拟器属性会同时覆盖两者。

表 1. AVD 配置属性

AVD 属性 说明
AVD 名称 输入 AVD 的名称。名称可以包含大小写字母、数字、句点、下划线、括号、破折号和空格。存储 AVD 配置的文件的名称源自 AVD 名称。
AVD ID(高级) 查看 AVD ID。AVD ID 源自 AVD 名称。您可以使用该 ID 从命令行引用 AVD。
硬件配置文件 点击 更改 以从选择硬件窗口中选择不同的硬件配置文件。
系统映像 点击 更改 以从系统映像窗口中选择不同的系统映像。下载新映像需要活动的互联网连接。
启动方向

选择初始模拟器方向的选项

  • 纵向:高度大于宽度
  • 横向:宽度大于高度

只有在硬件配置文件中支持的选项才启用。在模拟器中运行 AVD 时,如果硬件配置文件中同时支持纵向和横向,则可以更改方向。

相机(高级)

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

相机选项仅在硬件配置文件中支持相机时才可用。它们不适用于 Wear OS、Android TV 或 Google TV。

网络:速度(高级)

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

  • GSM:全球移动通信系统
  • HSCSD:高速电路交换数据
  • GPRS:通用分组无线服务
  • EDGE:增强型数据速率 GSM 演进
  • UMTS:通用移动通信系统
  • HSDPA:高速下行分组接入
  • LTE:长期演进
  • 全速(默认):以计算机允许的最快速度传输数据。
网络:延迟(高级) 选择网络协议以设置协议从一个点到另一个点传输数据包所需的时间。
模拟性能:图形

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

  • 硬件:使用计算机显卡进行更快渲染。
  • 软件:在软件中模拟图形,如果您在显卡渲染方面遇到问题,这将很有用。
  • 自动:让模拟器根据您的显卡决定最佳选项。
模拟性能:启动选项(高级)

    选择 AVD 的启动方式

  • 冷启动:设备每次都从关机状态启动。
  • 快速启动:设备从保存的快照加载设备状态。
模拟性能:多核 CPU(高级) 选择您要用于模拟器的计算机处理器核心数。使用更多处理器核心会加快模拟器速度。
内存和存储:RAM(高级) 覆盖硬件制造商设置的设备 RAM 量。增加大小会占用计算机更多资源,但支持更快的模拟器操作。输入 RAM 大小并选择单位,可以是 B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或 TB(太字节)。
内存和存储:VM 堆(高级) 覆盖硬件制造商设置的 VM 堆大小。输入堆大小并选择单位,可以是 B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或 TB(太字节)。
内存和存储:内部存储(高级) 覆盖硬件制造商设置的设备上不可移动内存空间量。输入大小并选择单位,可以是 B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或 TB(太字节)。
内存和存储:SD 卡(高级)

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

要使用 Android Studio 管理的虚拟 SD 卡,请选择 Studio 管理,输入大小,然后选择单位,可以是 B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)或 TB(太字节)。建议至少 100 MB 才能使用相机。

要管理文件中的空间,请选择 外部文件 并点击 ... 以指定文件和位置。

有关更多信息,请参阅 mksdcardAVD 数据目录

设备框架:启用设备框架 选择此选项可在模拟器窗口周围启用一个框架,以模拟真实设备的外观。
自定义皮肤定义(高级) 选择一个皮肤来控制设备在模拟器中显示时的外观。如果屏幕尺寸对于皮肤来说太大,则可能导致屏幕被裁剪,从而无法看到整个屏幕。有关更多信息,请参阅创建模拟器皮肤部分。
键盘:启用键盘输入(高级) 选择此选项可使用您的硬件键盘与模拟器交互。此选项对 Wear OS 和 Android TV 禁用。

硬件配置文件属性

您可以在配置硬件配置文件窗口中为硬件配置文件指定以下属性。AVD 配置属性会覆盖硬件配置文件属性,而您在模拟器运行时设置的模拟器属性会同时覆盖两者。

设备管理器中包含的预定义硬件配置文件不可编辑。但是,您可以复制这些配置文件并编辑副本。

某些属性对于某些设备类型是禁用的。例如,“圆形”属性仅适用于 Wear OS 设备。

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

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

选择以下选项之一

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

选择以下选项之一

  • 无:无硬件控制。通过软件导航。
  • 方向键:方向键支持。
  • 轨迹球
  • 滚轮

这些选项适用于设备本身的硬件控件。但是,外部控制器发送到设备的事件是相同的。

支持的设备状态

选择一个或两个选项

  • 纵向:高度大于宽度
  • 横向:宽度大于高度

您必须至少选择一个选项。如果选择两个选项,则可以在模拟器中切换方向。

相机

要启用相机,请选择一个或两个选项

  • 后置摄像头:镜头背对用户
  • 前置摄像头:镜头面向用户

如果相机已启用,您可以根据 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 模拟器皮肤文件规范