从命令行启动模拟器

Android SDK 包含一个 Android 设备模拟器——一个在您的计算机上运行的虚拟设备。Android 模拟器让您无需使用物理设备即可开发和测试 Android 应用程序。

此页面描述了您可以与 Android 模拟器一起使用的命令行功能。有关使用 Android 模拟器 UI 的信息,请参阅 在 Android 模拟器上运行应用程序

启动模拟器

使用 emulator 命令启动模拟器,作为 运行您的项目通过 AVD 管理器启动模拟器 的替代方法。

以下是从终端提示符启动虚拟设备的基本命令行语法

emulator -avd avd_name [ {-option [value]} … ]

或者

emulator @avd_name [ {-option [value]} … ]

例如,如果您在 Mac 上运行的 Android Studio 中启动模拟器,则默认命令行将类似于以下内容

/Users/janedoe/Library/Android/sdk/emulator/emulator -avd Pixel8_API_34 -netdelay none -netspeed full -qt-hide-window -grpc-use-token -idle-grpc-timeout

请注意,参数 -qt-hide-window -grpc-use-token -idle-grpc-timeout 仅用于在 Android Studio 中运行模拟器窗口。如果您想在自己的窗口中运行模拟器,则不应使用这些额外参数。

您可以在启动模拟器时指定启动选项,但不能在模拟器启动后指定。

要获取 AVD 名称列表,请输入以下命令

emulator -list-avds

使用此选项显示 Android 主目录中的 AVD 名称列表。您可以通过设置 ANDROID_SDK_HOME 环境变量来覆盖默认主目录,该变量指定存储所有配置和 AVD 内容的用户特定目录的根目录。

您可以在启动虚拟设备之前在终端窗口中设置环境变量,或者通过操作系统中的用户设置进行设置。例如,在 Linux 上的 .bashrc 文件中。

要停止 Android 模拟器,请关闭模拟器窗口。

安装应用程序

除了通过 Android Studio 或 模拟器 UI 安装应用程序外,您还可以使用 adb 实用程序将应用程序安装到虚拟设备上。

要使用 adb 安装、运行和测试您的应用程序,请遵循以下一般步骤。

  1. 按照 构建和运行您的应用程序 中的说明,将您的应用程序构建并打包到 APK 中。
  2. 从命令行启动模拟器,如上一节所述,使用任何必要的启动选项。
  3. 使用 adb 安装您的应用程序。
  4. 在模拟器上运行和测试您的应用程序。
    模拟器运行时,您可以使用 模拟器控制台 按需发出命令。

要卸载应用程序,请按照在 Android 设备上执行的操作进行操作。

虚拟设备会在用户数据磁盘分区 (userdata-qemu.img) 中保留应用程序及其状态数据,以供重启使用。要清除此数据,请使用 -wipe-data 选项启动模拟器,或在 AVD 管理器中清除数据。有关用户数据分区和其他存储的更多信息,请参阅下一节。

注意:adb 实用程序将虚拟设备视为实际的物理设备。因此,您可能必须在一些常见的 adb 命令(例如 install)中使用 -d 标志。-d 标志允许您指定要作为命令目标的多个连接设备中的哪一个。如果您没有指定 -d,模拟器会将目标设置为其列表中的第一个设备。

了解默认目录和文件

模拟器使用关联文件,其中 AVD 系统和数据目录最为重要。在指定命令行选项时,了解模拟器目录结构和文件会有所帮助,尽管您通常不需要修改默认目录或文件。

Android 模拟器使用 (QEMU) 虚拟机监控程序。

AVD 系统目录

系统目录包含模拟器用来模拟操作系统的 Android 系统映像。此目录包含所有相同类型 AVD 共享的特定于平台的只读文件,包括 API 级别、CPU 架构和 Android 变体。默认位置如下所示

  • macOS 和 Linux - ~/Library/Android/sdk/system-images/android-apiLevel/variant/arch/
  • Windows - C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

其中

  • apiLevel 是一个数字 API 级别,或用于预览版本的字母。例如,android-V 表示 Android VanillaIceCream 预览版。发布后,它成为 API 级别 35,由 android-35 指定。
  • variant 是对应于系统映像实施的特定功能的名称。例如,google_apisandroid-wear
  • arch 是目标 CPU 架构。例如,x86

使用 -sysdir 选项为 AVD 指定不同的系统目录。

模拟器从系统目录读取以下文件

表 1. Android 模拟器读取的系统目录文件

文件 说明 指定不同文件的选项
kernel-qemukernel-ranchu AVD 的二进制内核映像。kernel-ranchu 基于 QEMU 模拟器。 -kernel
ramdisk.img 引导分区映像。这是 system.img 的一个子集,由内核在系统映像装载之前最初装载。它通常仅包含少量二进制文件和初始化脚本。 -ramdisk
system.img 系统映像的只读初始版本。具体而言,包含与 API 级别和变体相对应的系统库和数据的分区。 -system
userdata.img 数据分区的初始版本,在模拟的系统中显示为 data/,并包含 AVD 的所有可写数据。当您创建新的 AVD 或使用 ‑wipe-data 选项时,模拟器会使用此文件。有关更多信息,请参阅下一节中的 userdata-qemu.img 文件说明。 -initdata
-init-data

AVD 数据目录

AVD 数据目录(也称为内容目录)特定于单个 AVD 实例,并包含 AVD 的所有可修改数据。

默认位置如下所示,其中 name 是 AVD 名称

  • macOS 和 Linux - ~/.android/avd/name.avd/
  • Windows 10 及更高版本 - C:\Users\user\.android\name.avd\

使用 -datadir 选项指定不同的 AVD 数据目录。

下表列出了此目录中最重要的文件

表 2. AVD 数据目录中的重要文件

文件 说明 指定不同文件的选项
userdata-qemu.img

数据分区的內容,在模拟的系统中显示为 data/。当您创建新的 AVD 或使用 -wipe-data 选项将 AVD 重置为出厂默认值时,模拟器会将系统目录中的 userdata.img 文件复制到此文件以创建此文件。

每个虚拟设备实例都会使用可写的用户数据映像来存储用户和特定于会话的数据。例如,它使用映像来存储唯一用户的已安装应用程序数据、设置、数据库和文件。每个用户都有一个不同的 ANDROID_SDK_HOME 目录,该目录存储该用户创建的 AVD 的数据目录。每个 AVD 都有一个单独的 userdata-qemu.img 文件。

-data
cache.img 缓存分区映像,在模拟的系统中显示为 cache/。当您首次创建 AVD 或使用 -wipe-data 选项时,它为空。它存储临时下载文件,并由下载管理器(有时还有系统)填充。例如,浏览器会使用它在模拟器运行时缓存下载的网页和图像。当您关闭虚拟设备时,文件会被删除。您可以使用 -cache 选项保留文件。 -cache
sdcard.img

(可选) SD 卡分区映像,允许您在虚拟设备上模拟 SD 卡。您可以在 AVD 管理器 中或使用 mksdcard 工具创建 SD 卡映像文件。文件存储在您的开发计算机上,必须在启动时装载。

在 AVD 管理器中定义 AVD 时,您可以选择使用自动管理的 SD 卡文件或使用 mksdcard 工具创建的文件。您可以在 AVD 管理器中查看与 AVD 关联的 sdcard.img 文件。-sdcard 选项会覆盖 AVD 中指定的 SD 卡文件。请注意,此 SD 卡选项在使用 Apple Silicon 的 Mac 上不起作用。

您可以通过使用模拟器 UI 或 adb 实用程序(在虚拟设备运行时)来浏览模拟的 SD 卡,向其发送文件,以及从其复制和删除文件。您无法从运行的虚拟设备中删除模拟的 SD 卡。

要将文件复制到 SD 卡文件以供加载,请将映像文件装载为循环设备,然后复制文件。或者,使用 mtools 软件包之类的实用程序将文件直接复制到映像。

模拟器将文件视为字节池,因此 SD 卡格式无关紧要。

-wipe-data 选项不会影响此文件。如果您想清除文件,请删除文件,然后使用 AVD 管理器或 mksdcard 工具重新创建文件。更改文件大小也会删除文件并创建一个新文件。

-sdcard

列出模拟器使用的目录和文件

您可以通过两种方式发现文件所在位置

  • 从命令行启动模拟器时,使用 -verbose-debug init 选项。查看输出。
  • 使用 emulator -help-option 命令列出默认目录。例如
    emulator -help-datadir
    Use '-datadir <dir>' to specify a directory where writable image files will be searched. On this system, the default directory is: /Users/me/.android See '-help-disk-images' for more information about disk image files.

命令行启动选项

本节列出了您在从命令行启动模拟器时可以在命令行上提供的选项。

注意:Android 模拟器不断发展以提高其可靠性。有关针对各种命令行选项报告的问题的状态以及如何报告错误,请参阅 Android Issue Tracker

常用选项

下表列出了您可能更常使用的命令行启动选项

表 3. 常用命令行选项

命令行选项 说明
快速启动
-no-snapshot-load 执行冷启动并在退出时保存模拟器状态。
-no-snapshot-save 如果可能,执行快速启动,但在退出时不保存模拟器状态。
-no-snapshot 完全禁用快速启动功能,并且不装载或保存模拟器状态。
设备硬件
-camera-back mode
-camera-front mode
设置面向后或面向前的相机的仿真模式。这会覆盖 AVD 中的任何相机设置。

mode 可以是以下任何值

  • emulated - 模拟器会在软件中模拟相机。
  • webcamn - 模拟器会使用连接到您的开发计算机的网络摄像头,由编号指定。有关网络摄像头的列表,请使用 -webcam-list 选项。例如,webcam0
  • none - 在虚拟设备中禁用相机。

例如

emulator @Pixel8_API_34 -camera-back webcam0
-webcam-list 列出开发计算机上可用于仿真的网络摄像头。例如
emulator @Pixel8_API_34 -webcam-list
        List of web cameras connected to the computer:
        Camera 'webcam0' is connected to device 'webcam0'
        on channel 0 using pixel format 'UYVY'

在示例中,第一个 webcam0 是您在命令行上使用的名称。第二个 webcam0 是开发计算机上操作系统使用的名称。第二个名称会因操作系统而异。

从 SDK Tools 25.2.4 开始,需要 AVD 名称。

磁盘映像和内存
-memory size

指定物理 RAM 大小,从 1536 到 8192 MB。例如

emulator @Pixel8_API_34 -memory 2048

此值会覆盖 AVD 设置。

-sdcard filepath 指定 SD 卡分区映像文件的名称和路径。例如

emulator @Pixel8_API_34 -sdcard C:/sd/sdcard.img

如果找不到文件,模拟器仍然会启动,但没有 SD 卡。命令将返回一个 **无 SD 卡镜像** 警告。

如果未指定此选项,则默认情况下为数据目录中的 sdcard.img,除非 AVD 指定了不同的位置。有关模拟 SD 卡的详细信息,请参阅 AVD 数据目录

-wipe-data 删除用户数据并从初始数据文件复制数据。此选项将清除虚拟设备的数据,并将其恢复到首次定义时的状态。所有已安装的应用和设置都将被删除。例如

emulator @Pixel8_API_34 -wipe-data

默认情况下,用户数据文件是 userdata-qemu.img,初始数据文件是 userdata.img。这两个文件都位于数据目录中。 -wipe-data 选项不会影响 sdcard.img 文件。有关用户数据的更多信息,请参阅名为 了解默认目录和文件 的部分。

调试
-debug tags 启用或禁用一个或多个标签的调试消息显示。用空格、逗号或冒号分隔多个标签。例如

$ emulator @Pixel8_API_34 -debug init,metrics

要禁用标签,请在其前面放置一个连字符 (-)。例如,以下选项将显示所有调试消息,除了与网络套接字和指标相关的消息

-debug all,-socket,-metrics

要获取标签和描述的列表,请使用 -help-debug-tags 选项。例如

emulator -help-debug-tags

您可以在 ANDROID_VERBOSE 环境变量中定义默认调试标签。在逗号分隔的列表中定义要使用的标签。以下示例展示了如何指定 socketgles 标签

ANDROID_VERBOSE=socket,gles

它等效于使用

-debug-socket -debug-gles

-debug socket,gles

-debug-tag
-debug-no-tag
启用特定类型的调试消息。使用 no 形式来禁用调试消息类型。例如

emulator @Pixel8_API_34 -debug-all -debug-no-metrics

要获取标签列表,请使用 emulator -help-debug-tags 命令。

-logcat logtags 启用一个或多个标签的 Logcat 消息显示,并将它们写入终端窗口。例如,以下命令将启用所有组件的错误消息

emulator @Pixel8_API_34 -logcat *:e

logtags 使用与 adb logcat logtags 命令相同的格式。输入 adb logcat -help 以获取更多信息。它是一个由空格或逗号分隔的日志筛选器列表,格式为 componentName:logLevelcomponentName 可以是通配符星号 (*) 或组件名称,例如 ActivityManagerSystemServerInputManagerWindowManager

logLevel 是以下值之一

  • v - 详细
  • d - 调试
  • i - 信息
  • w - 警告日志级别
  • e - 错误
  • s - 静默

以下示例将以信息日志级别显示 GSM 组件消息

emulator @Pixel8_API_34 -logcat '*:s GSM:i'

如果您未在命令行中提供 -logcat 选项,模拟器将查找 ANDROID_LOG_TAGS 环境变量。如果 ANDROID_LOG_TAGS 定义了有效的 logtags 值,并且不为空,模拟器将使用其值默认情况下启用将 Logcat 输出到终端。您也可以通过 adb 将相同或其他日志消息重定向到终端。

有关 Logcat 和 adb 的更多信息,请参阅 Logcat 命令行工具使用 Logcat 查看和写入日志Log 类和 发出 adb 命令

-show-kernel 在终端窗口中显示内核调试消息。例如

emulator @Pixel8_API_34 -show-kernel

此选项的一个用途是检查引导过程是否正常工作。

-verbose 将模拟器初始化消息打印到终端窗口。例如

emulator @Pixel8_API_34 -verbose

它将显示在启动 AVD 中定义的虚拟设备时实际选择的文件和设置。此选项与指定 -debug-init 相同。

网络
-dns-server servers 使用指定的 DNS 服务器。 servers 是最多四个 DNS 服务器名称或 IP 地址的逗号分隔列表。例如
emulator @Pixel8_API_34 -dns-server 192.0.2.0,
192.0.2.255

默认情况下,模拟器会尝试检测您使用的 DNS 服务器,并在模拟防火墙网络中设置特殊别名,以允许 Android 系统直接连接到服务器。使用 -dns-server 选项指定不同的 DNS 服务器列表。

-http-proxy proxy 通过指定的 HTTP/HTTPS 代理进行所有 TCP 连接。如果您的模拟器必须通过代理服务器访问互联网,您可以使用此选项或 http_proxy 环境变量来设置适当的重定向。例如

emulator @Pixel8_API_34 -http-proxy myserver:1981

proxy 可以是以下之一

http://server:port
http://username:password@server:port

可以省略 http:// 前缀。

如果未提供此选项,模拟器将查找 http_proxy 环境变量,并自动使用与 proxy 格式匹配的任何值。有关更多信息,请参阅 使用代理的模拟器

-netdelay delay

将网络延迟模拟设置为以下 delay 值之一,单位为毫秒

  • gsm - GSM/CSD (最小值 150,最大值 550)。
  • hscsd - HSCSD (最小值 80,最大值 400)。
  • gprs - GPRS (最小值 35,最大值 200)。
  • edge - EDGE/EGPRS (最小值 80,最大值 400)。
  • umts - UMTS/3G (最小值 35,最大值 200)。
  • hsdpa - HSDPA (最小值 0,最大值 0)。
  • lte - LTE (最小值 0,最大值 0)。
  • evdo - EVDO (最小值 0,最大值 0)。
  • none - 无延迟,默认值 (最小值 0,最大值 0)。
  • num - 指定精确延迟。
  • min:max - 指定单个最小值和最大值延迟。

例如

emulator @Pixel8_API_34 -netdelay gsm

模拟器支持网络限速以及更高的连接延迟。您可以通过皮肤配置或 ‑netspeed-netdelay 选项来定义它。

-netfast 禁用网络限速。例如

emulator @Pixel8_API_34 -netfast

此选项与指定 -netspeed full -netdelay none 相同。这些是这些选项的默认值。

-netspeed speed

设置网络速度模拟。使用以下 speed 值之一指定最大网络上传和下载速度,单位为 kbps

  • gsm - GSM/CSD (上行:14.4,下行:14.4)。
  • hscsd - HSCSD (上行:14.4,下行:57.6)。
  • gprs - GPRS (上行:28.8,下行:57.6)。
  • edge - EDGE/EGPRS (上行:473.6,下行:473.6)。
  • umts - UMTS/3G (上行:384.0,下行:384.0)。
  • hsdpa - HSDPA (上行:5760.0,下行:13,980.0)。
  • lte - LTE (上行:58,000,下行:173,000)。
  • evdo - EVDO (上行:75,000,下行:280,000)。
  • full - 无限制,默认值 (上行:0.0,下行:0.0)。
  • num - 指定上传和下载速度。
  • up:down - 指定单个上传和下载速度。

例如

emulator @Pixel8_API_34 -netspeed edge

模拟器支持网络限速以及更高的连接延迟。您可以通过皮肤配置或 ‑netspeed-netdelay 选项来定义它。

-port port 设置用于控制台和 adb 的 TCP 端口号。例如

emulator @Pixel8_API_34 -port 5556

默认值为 5554,用于在您的机器上运行的第一个虚拟设备实例。虚拟设备通常占用一对相邻端口:一个控制台端口和一个 adb 端口。在特定机器上运行的第一个虚拟设备的控制台使用控制台端口 5554 和 adb 端口 5555。后续实例使用增加 2 的端口号。例如,5556/5557、5558/5559,依此类推。范围为 5554 到 5682,允许 64 个并发虚拟设备。

端口分配通常与指定 -ports port,{port + 1} 相同。 {port + 1} 必须是空闲的,并且保留用于 adb。如果任何控制台或 adb 端口已被占用,模拟器将不会启动。

‑port 选项将报告虚拟设备正在使用的端口和序列号,并在您提供的数值存在问题时发出警告。在模拟器 UI 中,您可以在窗口标题中看到控制台端口号,并通过选择 **帮助** > **关于** 来查看 adb 端口号。

请注意,如果 port 值不是偶数,并且在 5554 到 5584 范围内,虚拟设备将启动,但在使用 adb devices 命令时不可见,如果 adb server 在模拟器之后启动。因此,我们建议使用偶数控制台端口号。

-ports
console-port,adb-port
设置用于控制台和 adb 的 TCP 端口。例如

emulator @Pixel8_API_34 -ports 5556,5559

有效的端口范围为 5554 到 5682,允许 64 个并发虚拟设备。 -ports 选项将报告模拟器实例正在使用的端口和序列号,并在您提供的数值存在问题时发出警告。

我们建议尽可能使用 -port 选项。 -ports 选项适用于需要特殊设置的网络配置。

有关设置控制台和 adb 端口的更多信息,请参见 -port 选项。

-tcpdump filepath 捕获网络数据包并将其存储到文件中。例如

emulator @Pixel8_API_34 -tcpdump /path/dumpfile.cap

使用此选项开始捕获通过模拟器虚拟以太网 LAN 发送的所有网络数据包。之后,您可以使用 Wireshark 等工具分析流量。

请注意,此选项会捕获所有以太网数据包,并不限于 TCP 连接。

系统
-accel mode 配置模拟器 VM 加速。例如

emulator @Pixel8_API_34 -accel auto

加速模拟仅适用于 x86 和 x86_64 系统映像。在 Linux 上,它依赖于 KVM。在 Windows 和 Mac 上,它依赖于英特尔 CPU 和英特尔 HAXM 驱动程序。如果您没有模拟 x86 或 x86_64 设备,则会忽略此选项。

对于 mode 的有效值是

  • auto - 自动确定是否支持加速,并在可能的情况下使用它(默认值)。
  • off - 完全禁用加速,这主要用于调试。
  • on - 强制加速。如果未安装或无法使用 KVM 或 HAXM,模拟器将无法启动并打印错误消息。

有关更多信息,请参见 为 Android 模拟器配置硬件加速

-accel-check 检查是否安装了模拟器 VM 加速所需的虚拟机管理程序(HAXM 或 KVM)。例如

emulator -accel-check

有关更多信息,请参见 检查是否安装了虚拟机管理程序

-engine engine

指定模拟器引擎

  • auto - 自动选择引擎(默认值)。
  • classic - 使用旧的 QEMU 1 引擎(已弃用)。
  • qemu2 - 使用新的 QEMU 2 引擎。

例如

emulator @Pixel8_API_34 -engine auto

自动检测应选择在模拟特定 AVD 时提供最佳性能的值。仅将 -engine 选项用于调试和比较目的。

-gpu mode 选择 GPU 模拟模式。例如

emulator @Pixel8_API_34 -gpu swiftshader_indirect

有关更多信息,请参见 配置图形加速

-no-accel 在使用 x86 或 x86_64 系统映像时禁用模拟器 VM 加速。它仅用于调试,与指定 -accel off 相同。例如

emulator @Pixel8_API_34 -no-accel

有关更多信息,请参见 为 Android 模拟器配置硬件加速

-nojni
-no-jni
在 Android Dalvik 或 ART 运行时中禁用扩展 Java 本机接口 (JNI) 检查。例如

emulator @Pixel8_API_34 -nojni

当您启动虚拟设备时,默认情况下会启用扩展 JNI 检查。有关更多信息,请参见 JNI 技巧

-selinux {disabled|permissive} 将安全增强型 Linux (SELinux) 安全模块设置为 disabledpermissive 模式在 Linux 操作系统上。例如

me-linux$ emulator @Pixel8_API_34 -selinux permissive

默认情况下,SELinux 处于 enforcing 模式,这意味着安全策略将被执行。 permissive 模式加载 SELinux 策略但不执行它。此选项仅记录策略违规。 disabled 模式禁用内核对 SELinux 的支持。

-timezone timezone

将虚拟设备的时区设置为 timezone,而不是主机时区。例如

emulator @Pixel8_API_34 -timezone Europe/Paris

默认情况下,模拟器使用您的开发计算机的时区。使用此选项指定不同的时区,或者如果自动检测无法正常工作。 timezone 值必须采用 zoneinfo 格式,即 area/locationarea/subarea/location。例如

  • America/Los_Angeles
  • Europe/Paris
  • America/Argentina/Buenos_Aires

指定的时区必须在 zoneinfo 数据库 中。

-version 显示模拟器版本号。例如

emulator @Pixel8_API_34 -version

或者

emulator -version
UI
-no-boot-anim 在模拟器启动期间禁用启动动画以加快启动速度。例如

emulator @Pixel8_API_34 -no-boot-anim

在较慢的计算机上,此选项可以显着加快启动顺序。

-screen mode 设置模拟触摸屏模式。例如

emulator @Pixel8_API_34 -screen no-touch

mode 可以是以下任何值

  • touch - 模拟触摸屏(默认值)。
  • multi-touch - 模拟多点触摸屏。
  • no-touch - 禁用触摸和多点触摸屏模拟。

高级选项

下表中的命令行启动选项可用,但普通应用程序开发人员不常用。

在说明中,工作目录 是您在其中输入命令的终端中的当前目录。有关 AVD 系统目录和数据目录以及其中存储的文件的信息,请参见有关 默认目录和文件 的部分。

其中一些选项适用于外部应用程序开发人员,而其中一些选项主要由平台开发人员使用。应用程序开发人员 创建 Android 应用程序并在特定 AVD 上运行它们。平台开发人员 在 Android 系统上工作并在没有预先创建的 AVD 的情况下在模拟器中运行它。

表 4. 高级命令行选项

高级选项 简要说明
-bootchart timeout

启用启动图表,超时时间以秒为单位。一些 Android 系统映像具有经过修改的 init 系统,该系统集成了启动图表功能。您可以使用此选项将启动图表超时时间传递给系统。如果您的 init 系统未激活启动图表,则该选项将不起作用。此选项主要对平台开发人员有用,而不是对外部应用程序开发人员有用。

例如

emulator @Pixel8_API_34 -bootchart 120
-cache filepath

指定缓存分区映像文件。提供文件名和绝对路径或相对于数据目录的路径以设置持久缓存文件。如果文件不存在,模拟器会将其创建为空文件。

例如

emulator @Pixel8_API_34 -cache
   ~/.android/avd/Pixel8_API_34.avd/cache_persistent.img

如果您不使用此选项,默认值为一个名为 cache.img 的临时文件。有关更多信息,请参见 AVD 数据目录

-cache-size size

设置缓存分区大小(以 MB 为单位)。

例如

emulator @Pixel8_API_34 -cache-size 1000

如果您未指定此选项,则默认值为 66 MB。通常,大多数应用程序开发人员不需要此选项,除非他们需要下载比默认缓存更大的非常大的文件。有关缓存文件的更多信息,请参见 AVD 数据目录

-data filepath

设置用户数据分区映像文件。提供文件名和绝对路径或相对于工作目录的路径以设置持久用户数据文件。如果文件不存在,模拟器会从默认的 userdata.img 文件创建映像,将其存储在您指定的目录中,并在关闭时将用户数据持久保存到该目录中。

例如

emulator @Pixel8_API_34 -data
   ~/.android/avd/Pixel8_API_34.avd/userdata-test.img

如果您不使用此选项,则默认值为一个名为 userdata-qemu.img 的文件。有关用户数据文件的更多信息,请参见 AVD 数据目录

-datadir dir

使用绝对路径指定数据目录。有关更多信息,请参见 AVD 数据目录

例如

emulator @Pixel8_API_34 -datadir
   ~/.android/avd/Pixel8_API_34.avd/mytest
-force-32bit

在 64 位平台上使用 32 位模拟器。有时,此选项对于测试或调试很有用。例如,曾经出现过模拟器有时无法在 64 位 Windows 上运行,但 32 位运行的情况。此选项有助于进行比较以调试问题。以下是一个示例

emulator @Pixel8_API_34 -force-32bit
-help-disk-images

获取有关磁盘映像的帮助。此选项提供与应用程序和平台开发人员都相关的信息。例如

emulator -help-disk-images
-help-char-devices

获取有关字符 device 规范的帮助。一些模拟器选项需要 device 参数。例如

emulator -help-char-devices
-help-sdk-images

获取与应用程序开发人员相关的磁盘映像的帮助。此选项获取有关使用 SDK 工具创建的 AVD 的映像文件所在位置的信息。例如

emulator -help-sdk-images
-help-build-images

获取与平台开发人员相关的磁盘映像的帮助。例如

emulator -help-build-images
-initdata filepath
-init-data filepath

指定数据分区的初始版本。在擦除用户数据后,模拟器会将指定文件的​​内容复制到用户数据(默认情况下,userdata-qemu.img 文件)而不是使用默认的 userdata.img 文件作为初始版本。指定文件名和绝对路径或相对于工作目录的路径。

例如

emulator @Pixel8_API_34 -initdata
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/userdata-test.img

如果您未指定路径,它会将文件放置在系统目录中。有关更多信息,请参见 AVD 系统目录

-kernel filepath

使用特定的模拟内核。如果您未指定路径,模拟器会在系统目录中查找。

使用 ‑show‑kernel 选项查看内核调试消息。

例如

emulator @Pixel8_API_34 -kernel
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/kernel-test.img -show-kernel

如果您未指定此选项,则默认值为 kernel-ranchu。有关更多信息,请参见 AVD 系统目录

-noaudio
-no-audio

禁用此虚拟设备的音频支持。一些 Linux 和 Windows 计算机具有有缺陷的音频驱动程序,会导致不同的症状,例如阻止模拟器启动。在这种情况下,使用此选项可以克服此问题。或者,您可以使用 QEMU_AUDIO_DRV 环境变量来更改音频后端。

例如

emulator @Pixel8_API_34 -noaudio
-nocache
-no-cache

启动模拟器,但没有缓存分区。如果您不使用此选项,则默认值为一个名为 cache.img 的临时文件。此选项仅供平台开发人员使用。有关更多信息,请参见 AVD 数据目录

例如

emulator @Pixel8_API_34 -nocache
-no-snapshot

抑制自动加载和保存操作,导致模拟器执行完整的启动序列,并在关闭时丢失其状态。它会覆盖 -snapshot 选项。

例如

emulator @Pixel8_API_34 -no-snapshot
-no-snapshot-load

阻止模拟器从快照存储加载 AVD 状态。执行完整的启动。

例如

emulator @Pixel8_API_34 -no-snapshot-load
-no-snapshot-save

阻止模拟器在退出时将 AVD 状态保存到快照存储,这意味着所有更改都将丢失。

例如

emulator @Pixel8_API_34 -no-snapshot-save
-no-snapshot-update-time

不会尝试在恢复快照时立即校正 AVD 时钟时间。此选项在测试期间可能很有用,因为它可以避免时间突然跳跃。时间更新仍然大约每 15 秒发送到 AVD。

例如

emulator @Pixel8_API_34 -no-snapshot-update-time
-no-snapstorage

启动模拟器,但没有安装文件来存储或加载状态快照,这会导致完整的启动并禁用状态快照功能。此选项会覆盖 -snapstorage-snapshot 选项。

例如

emulator @Pixel8_API_34 -no-snapstorage
-no-window

禁用模拟器的图形窗口显示。此选项在没有显示屏的服务器上运行模拟器时很有用。您可以通过 adb 或控制台访问模拟器。例如

emulator @Pixel8_API_34 -no-window
-partition-size size

指定系统数据分区大小(以 MB 为单位)。例如

emulator @Pixel8_API_34 -partition-size 1024
-prop name=value

在模拟器启动时设置 Android 系统属性。 name 必须是一个标记为 qemu_prop 的属性名称,最多 32 个字符,不包含空格,且 value 必须是一个最多 92 个字符的字符串。例如,请参见 property_contexts 文件。您可以在一个命令行上指定多个 ‑prop 选项。此选项对于调试可能很有用。例如

emulator @Pixel8_API_34 -prop qemu.name=value -prop qemu.abc=xyz
-qemu args 将参数传递给 QEMU 模拟器软件。使用此选项时,请确保它是最后指定的选项,因为其后的所有选项都被解释为 QEMU 特定的选项。此选项相当高级,应仅由熟悉 QEMU 和 Android 模拟的开发人员使用。
-qemu -h

显示 -qemu 帮助。例如

emulator -qemu -h
-ramdisk filepath

指定一个 ramdisk 启动映像。指定文件名以及绝对路径或相对于工作目录的路径。

例如

emulator @Pixel8_API_34 -ramdisk
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/ramdisk-test.img

如果您不使用此选项,则默认值为系统目录中的 ramdisk.img 文件。有关详细信息,请参阅 AVD 系统目录

-report-console socket

在启动模拟之前将控制台端口报告给远程第三方。这对于自动化测试脚本可能很有用。 socket 必须使用以下格式之一

  • tcp:port[,server][,max=seconds][,ipv6]
  • unix:port[,server][,max=seconds][,ipv6]

有关详细信息,请使用 -help-report-console 选项,如有关 特定选项的帮助 一节中所述。

-shell

在当前终端上创建一个 root shell 控制台。此选项与 adb shell 命令的不同之处在于

  • 它创建了一个 _root_ shell,允许您修改系统的许多部分。
  • 即使模拟系统中的 adb daemon 出现故障,它也可以工作。
  • 按 Control+C(或 macOS 上的 Command-C)停止模拟器而不是 shell。

例如

emulator @Pixel8_API_34 -shell
-snapshot name

指定快照存储文件内用于自动启动和保存操作的快照的名称。

模拟器可以从较早状态快照恢复执行,而不是执行完整的启动序列,这通常快得多。提供此选项时,模拟器从快照映像中加载该名称的快照,并在退出时以相同的名称保存它。

如果您不使用此选项,则默认值为完整的启动序列。如果指定的快照不存在,模拟器将执行完整的启动序列,然后执行保存操作。

有关指定快照存储文件和默认文件的详细信息,请参阅 -snapstorage 选项。

emulator @Pixel8_API_34 -snapshot snapshot2

请记住,在加载快照的过程中,系统、用户数据和 SD 卡映像的所有内容都将被创建快照时保存的内容覆盖。除非您将此信息保存在不同的快照中,否则自那时以来的任何更改都会丢失。

您还可以使用 avd snapshot save name 命令从模拟器控制台创建快照。有关详细信息,请参阅 发送模拟器控制台命令

-snapshot-list

显示可用快照的列表。此命令打印一个表,其中包含存储在模拟器启动时使用的快照存储文件中的快照,然后退出。如果您还指定 -snapstorage file,则此命令将打印一个表,其中包含存储在文件中的快照。

例如

emulator @Pixel8_API_34 -snapshot-list -snapstorage
   ~/.android/avd/Pixel8_API_34.avd/snapshots-test.img

您可以使用输出中的 ID 和 TAG 列值作为 -snapshot 选项的参数。

-snapstorage filepath

指定一个包含所有状态快照的存储库文件。执行期间创建的所有快照都将保存到此文件中。只有此文件中的快照可以在模拟器运行期间恢复。

例如

emulator @Pixel8_API_34 -snapstorage
   ~/.android/avd/Pixel8_API_34.avd/snapshots-test.img

如果您未指定此选项,则默认值为数据目录中的 snapshots.img。如果指定的 文件不存在,模拟器将启动,但不会支持保存或加载状态快照。

-sysdir dir

使用绝对路径指定系统目录。有关详细信息,请参阅 AVD 系统目录。例如

emulator @Pixel8_API_34 -sysdir
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/test
-system filepath

指定一个初始系统文件。提供文件名以及绝对路径或相对于工作目录的路径。

例如

emulator @Pixel8_API_34 -system
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/system-test.img

如果您不使用此选项,则默认值为系统目录中的 system.img 文件。有关详细信息,请参阅 AVD 系统目录

-use-system-libs

在 Linux 上,使用系统 libstdc++,而不是捆绑在模拟器系统中的版本。仅当模拟器无法正常启动时才使用此选项,并注意它并不总是有效。或者,将 ANDROID_EMULATOR_USE_SYSTEM_LIBS 环境变量设置为 1。

例如

me-linux$ emulator @Pixel8_API_34 -use-system-libs
-writable-system

使用此选项在模拟会话期间拥有可写的系统映像。为此

  1. 使用 -writable-system 选项启动虚拟设备。
  2. 从命令终端输入 adb remount 命令,告诉模拟器将 system/ 重新挂载为读写。默认情况下,它被挂载为只读。

使用此标志会创建系统映像的临时副本,该副本可能非常大,高达数百 MB,但在模拟器退出时将被销毁。

已弃用的选项

以下命令行选项已弃用

  • -audio-in
  • -audio-out
  • -charmap
  • -code-profile
  • -cpu-delay
  • -dpi-device
  • -dynamic_skin
  • -enable-kvm
  • -gps
  • -image
  • -keyset
  • -help-keys
  • -help-keyset-file
  • -nand-limits
  • -noskin
  • -no-skin
  • -onion
  • -onion-alpha
  • -onion-rotation
  • -radio
  • -ranchu
  • -raw-keys
  • -scale
  • -shared-net-id
  • -shell-serial
  • -skin
  • -skindir
  • -trace
  • -useaudio

获取有关命令行选项的帮助

本节介绍如何获取有关命令行选项的帮助。它提供了有关启动模拟器时可用的常用模拟器命令行选项的更深入的信息。

列出所有模拟器选项

要打印所有模拟器选项的列表,包括简短描述,请输入以下命令

emulator -help

获取特定选项的详细帮助

要打印特定启动选项的帮助,请输入以下命令

emulator -help-option

例如

emulator -help-netspeed

此帮助比 -help 选项提供的描述更详细。

获取所有选项的详细帮助

要获取所有模拟器选项的详细帮助,请输入以下命令

emulator -help-all

列出模拟器环境变量

要获取模拟器环境变量列表,请输入以下命令

emulator -help-environment

您可以在启动虚拟设备之前在终端窗口中设置环境变量,也可以通过操作系统中的用户设置进行设置。例如,在 Linux 上的 .bashrc 文件中进行设置。

列出调试标签

要打印 -debug 选项的标签列表,请输入以下命令

emulator -help-debug-tags

-debug 选项允许您启用或禁用来自特定模拟器组件的调试消息,如标签所指定。