创建和管理虚拟设备

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

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

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

Opening the Device Manager from the Welcome screen

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

New Device Manager window

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

Device Manager list

如果您想使用虚拟设备以可扩展且自管理的方式运行自动化的已检测测试,请考虑使用 Gradle 管理的设备

关于 AVD

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

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

硬件配置文件

硬件配置文件定义了设备出厂时的特性。设备管理器预加载了某些硬件配置文件,例如 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 文件,请单击 菜单 并选择 显示在磁盘上
  • 要查看您可以包含在错误报告中的 AVD 配置详细信息以发送给 Android Studio 团队,请单击 菜单 并选择 查看详细信息

编辑现有的硬件配置文件

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

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

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

虚拟选项卡中,您可以对模拟器执行以下操作

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

导入和导出硬件配置文件

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

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

AVD 属性

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

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

表 1. AVD 配置属性

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

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

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

仅当硬件配置文件中支持某个选项时,该选项才可用。在模拟器中运行 AVD 时,如果硬件配置文件中同时支持纵向和横向,则可以更改方向。

摄像头(高级)

为任何启用的摄像头选择一个选项。模拟和虚拟场景设置会生成软件生成的图像,而网络摄像头设置则使用开发计算机的网络摄像头拍照

摄像头选项仅在硬件配置文件中支持摄像头时才可用。它们不适用于 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 汽车
屏幕:屏幕尺寸 以英寸为单位指定屏幕的物理尺寸,以对角线测量。如果尺寸大于计算机屏幕,则在启动时会减小尺寸。
屏幕:屏幕分辨率 输入宽度和高度(以像素为单位)以指定模拟屏幕上的像素总数。
屏幕:圆形 如果设备具有圆形屏幕(例如某些 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 模拟器皮肤文件规范