从命令行启动模拟器

Android SDK 包含一个 Android 设备模拟器,它是在您的计算机上运行的虚拟设备。Android 模拟器可让您无需使用实体设备即可开发和测试 Android 应用。

本页面介绍可与 Android 模拟器配合使用的命令行功能。如需了解如何使用 Android 模拟器界面,请参阅在 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 或模拟器界面安装应用之外,您还可以使用 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。

当虚拟设备运行时,您可以通过模拟器界面或 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 模拟器正在持续开发中,以使其更加可靠。有关针对各种命令行选项报告的问题状态以及报告 bug,请参阅 Android 问题跟踪器

常用选项

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

表 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。后续实例使用端口号递增两位。例如,5556/5557、5558/5559 等。范围是 5554 到 5682,允许 64 个并发虚拟设备。

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

‑port 选项报告虚拟设备正在使用的端口和序列号,并在您提供的值存在任何问题时发出警告。在模拟器界面中,您可以在窗口标题中看到控制台端口号,并通过选择 Help > About 查看 adb 端口号。

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

-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 配置模拟器虚拟机加速。例如

emulator @Pixel8_API_34 -accel auto

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

mode 的有效值为

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

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

-accel-check 检查是否安装了模拟器虚拟机加速所需的虚拟机管理程序(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 系统映像时禁用模拟器虚拟机加速。它仅用于调试,与指定 -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) 安全模块在 Linux 操作系统上设置为 disabledpermissive 模式。例如

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
用户界面
-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 时钟时间。此选项在测试期间很有用,因为它 avoids a sudden time jump. 时间更新仍会大约每 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 必须是最多 32 个字符且不含任何空格的属性名称(标记为 qemu_prop),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

在当前终端上创建根 shell 控制台。此选项与 adb shell 命令在以下方面有所不同

  • 它创建一个 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 选项允许您启用或禁用来自特定模拟器组件的调试消息,具体取决于标签的指定。