全部速查表Android开发

avd manager

AVD Manager 34+

Android Virtual Device(avdmanager / emulator)CLI 命令快速参考:创建 / 编辑 / 删除 AVD、列出系统镜像、无头模拟器启动、快照管理,以及网络转发,并附带常用参数和实操示例。

34 条命令

检查

avdmanager list avd

列出所有 AVD 及其名称、路径、目标 API、ABI 与外观。

-c 紧凑;--force 静默

avdmanager list avd
avdmanager list device

列出可创建 AVD 的设备配置(`pixel_6`、`pixel_tablet`、`wear_round` 等)。

-c

avdmanager list device | head -40
sdkmanager --list

列出所有 SDK 包——系统镜像、build tools、platform tools、NDK。创建 AVD 前用它来查找系统镜像 ID。

--include_obsolete

sdkmanager --list | grep 'system-images;android-34'

安装系统镜像

sdkmanager 'system-images;android-<api>;google_apis;x86_64'

下载带 Google API(Play Store / Maps 等)的 Android <api> x86_64 系统镜像。镜像 ID 格式为 `<type>;<version>;<variant>;<abi>`。

sdkmanager 'system-images;android-34;google_apis_playstore;x86_64'
sdkmanager 'system-images;android-<api>;default;arm64-v8a'

Apple Silicon 变体(arm64)——在 M 系列 Mac 上无需硬件加速。

sdkmanager 'system-images;android-33;default;arm64-v8a'

创建 AVD

avdmanager create avd -n <name> -k 'system-images;<id>' -d <device>

非交互式创建新 AVD。`-n` 是友好名称;`-k` 是系统镜像包 ID;`-d` 是 `avdmanager list device` 中的设备 ID。

-f 覆盖同名的现有 AVD;-p <path> 覆盖默认 AVD 路径;--sdcard <size|M|G>

avdmanager create avd -n pixel_7_api34 -k 'system-images;android-34;google_apis_playstore;x86_64' -d pixel_7 --sdcard 512M
echo no | avdmanager create avd ...

用 `no` 自动回答「是否创建自定义硬件配置?」提示,使命令可在 CI 中运行。

echo no | avdmanager create avd -n ci_avd -k 'system-images;android-30;default;x86_64' -d pixel_4
avdmanager create avd -n <name> --tag google_apis_playstore

为 AVD 标记 Play Store 系列系统镜像,适合测试应用内购买 / Google 登录流程。

avdmanager create avd -n pixel_7_playstore -k 'system-images;android-34;google_apis_playstore;x86_64' -d pixel_7 --tag google_apis_playstore

编辑 / 删除

avdmanager delete avd -n <name>

删除一个 AVD(定义 + 默认快照)。

-f 不弹确认

avdmanager delete avd -n old_test_avd -f
avdmanager move avd -n <name> -p <new-path>

把 AVD 移到新目录(迁移 `ANDROID_AVD_HOME` 时很有用)。

avdmanager move avd -n pixel_7_api34 -p /mnt/fast-ssd/.android/avd
avdmanager rename avd -n <old> -r <new>

重命名一个 AVD 而无需重新创建。

avdmanager rename avd -n pixel_7_api34 -r pixel_7_main

运行模拟器

emulator -avd <name>

在当前终端启动指定 AVD。需要 emulator 包与加速虚拟化支持(KVM/HVF/WHPX)。

-no-window;-no-audio;-no-boot-anim;-no-snapshot;-gpu swiftshader_indirect

emulator -avd pixel_7_api34 -no-window -no-snapshot
emulator -avd <name> -no-window -no-snapshot -no-audio -no-boot-anim

适合 CI 的无头启动——无显示、无声、跳过开机动画、不加载已有快照(始终冷启动)。

-accel auto|off;-gpu host|swiftshader_indirect

emulator -avd ci_avd -no-window -no-snapshot -no-audio -no-boot-anim -gpu swiftshader_indirect -accel auto
emulator -avd <name> -port <port>

将模拟器控制台绑定到指定端口(首个实例默认 5554,后续依次为 5556、5558 ...)。

-port 5554;-no-snapshot

emulator -avd pixel_7_api34 -port 5554 &
emulator -list-avds

打印所有 AVD 名称——在需要遍历或自动挑选 AVD 的脚本中很有用。

AVD=$(emulator -list-avds | head -1) && emulator -avd "$AVD" -no-window

快照

emulator -avd <name> -no-snapshot

每次都冷启动 AVD,忽略已保存的快照。当怀疑快照状态有问题时使用。

emulator -avd pixel_7_api34 -no-snapshot
adb -s emulator-5554 emu snapshot save <tag>

把当前模拟器状态保存为命名快照。

adb -s emulator-5554 emu snapshot save clean-install
adb -s emulator-5554 emu snapshot load <tag>

下次启动时恢复一个已命名的快照。

adb -s emulator-5554 emu snapshot load clean-install

网络

adb -s emulator-5554 reverse tcp:<d-port> tcp:<h-port>

让模拟器可以访问主机端口(例如 dev server 在 `localhost:3000`)。

adb -s emulator-5554 reverse tcp:3000 tcp:3000
emulator -avd <name> -dns-server <ip>

覆盖模拟器内部的 DNS 服务器——在公司网络屏蔽 Google 默认 DNS 时需要。

emulator -avd pixel_7_api34 -dns-server 1.1.1.1

性能

emulator -avd <name> -memory <MB>

限制模拟器内存。默认根据设备配置推导;CI runner 上可以调低。

emulator -avd pixel_7_api34 -memory 2048
emulator -avd <name> -cores <N>

设置向客户机报告的 CPU 核心数。

emulator -avd pixel_7_api34 -cores 4
emulator -avd <name> -gpu <mode>

选择图形后端:`host` 使用宿主机 GPU(最快,硬件加速),`swiftshader_indirect` 是软件回退(CI 安全),`off` 禁用 GPU。

host | swiftshader_indirect | guest | off

emulator -avd pixel_7_api34 -gpu swiftshader_indirect

硬件

emulator -avd <name> -skin <skin>

覆盖 AVD 的屏幕外观(`1080x1920`、`480x800`、`Nexus 5` 等)。

emulator -avd pixel_7_api34 -skin 1080x2280
emulator -avd <name> -camera-back <mode>

设置后置摄像头来源:`emulated`(动画场景)、`webcam0`、`webcam1`、`none`。

emulated | webcam<N> | none

emulator -avd pixel_7_api34 -camera-back webcam0

ADB 集成

adb -s emulator-<port> install <apk>

按 ADB 序列号(`emulator-5554`、`emulator-5556`...)在指定模拟器上安装 APK。

adb -s emulator-5554 install -r app-debug.apk
adb -s emulator-<port> shell screencap -p /sdcard/x.png

截取模拟器屏幕——用于截图回归测试。

adb -s emulator-5554 shell screencap -p /sdcard/x.png && adb -s emulator-5554 pull /sdcard/x.png ./snap.png
adb -s emulator-<port> emu kill

优雅关闭指定模拟器。

adb -s emulator-5554 emu kill

环境变量

echo $ANDROID_AVD_HOME

打印 AVD 存储目录(默认 `~/.android/avd`)。覆盖即可把 AVD 移到高速 SSD。

export ANDROID_AVD_HOME=/mnt/fast-ssd/.android/avd
echo $ANDROID_SDK_ROOT

打印 SDK 安装根目录。`ANDROID_SDK_ROOT` 和 `ANDROID_HOME` 都可用;新版脚本更倾向后者。

export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
echo $ANDROID_EMULATOR_HOME

打印模拟器配置目录(默认 `$ANDROID_SDK_ROOT/emulator`)。排查 `~/.android/` 与 SDK 路径时有用。

ls $ANDROID_EMULATOR_HOME/lib/

杂项

avdmanager --version

打印 avdmanager / cmdline-tools 版本。

avdmanager --version
emulator -version

打印模拟器包版本。

emulator -version
avdmanager --help

列出 avdmanager 的每个子命令及一行说明。

avdmanager --help

相关命令速查

关于 AVD Manager

Android Virtual Device(AVD)Manager 是驱动 Android 模拟器的工具链。两个 CLI 协同工作:`avdmanager`(随 Android SDK Command-line Tools 一起发布,自 Studio 3.0 / 2017 起)负责管理 AVD 定义;`emulator`(随 Android Emulator 包发布)负责运行它们。一个 AVD 是一个配置文件(硬件、系统镜像、存储、外观),会启动进一个基于 QEMU 的虚拟 Android 手机、平板、Wear、TV 或 Auto 设备。当前稳定版本线是 AVD Manager 34+(Android 14)。AVD 适用于无真机情况下的开发、自动化 UI 测试、demo,以及 CI 矩阵覆盖。现代 Android Studio 倾向使用带 Google Play 的 x86_64 系统镜像(硬件加速 + Google API)。AVD 默认存放在 `~/.android/avd/` 下。硬件加速要求 Linux 上的 KVM、Windows 上的 HAXM(已弃用)/ WHPX / Windows Hypervisor Platform,以及 macOS 上的 HVF。请勿上传 AVD 快照——它可能包含已登录的 Google 账号或私有应用。

速查页版本 1.0.0