全部速查表Android 開發

avd manager

AVD Manager 34+

Android Virtual Device(avdmanager/emulator)CLI 命令快速參考:建立/編輯/刪除 AVD、列出系統映像、無頭啟動模擬器、snapshot 管理與網路轉發——附常用參數與實作範例。

34 條命令

檢視

avdmanager list avd

列出所有 AVD 及其名稱、路徑、目標 API、ABI、skin。

-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/地圖等)的 Android <api> 系統映像(x86_64)。映像 ID 格式為 `<類型>;<版本>;<變體>;<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 ...

把「Create custom hardware profile?」提示自動回答為 `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 版系統映像的 tag,適合測試應用內購買/Google Sign-In 流程。

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(定義 + 預設 snapshot)。

-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 的無頭啟動——無畫面、無聲音、跳過開機動畫、不載入已存 snapshot(永遠冷啟動)。

-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=$(emulator -list-avds | head -1) && emulator -avd "$AVD" -no-window

Snapshots

emulator -avd <name> -no-snapshot

每次都冷啟動 AVD,忽略任何已存 snapshot。當 snapshot 狀態可疑時使用。

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

把當前模擬器狀態存成具名 snapshot。

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

下次啟動時還原具名 snapshot。

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

網路

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

讓模擬器可以連到主機埠(例如開發伺服器在 `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>

限制模擬器 RAM。預設取自裝置設定檔;CI 上可調低。

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 的螢幕 skin(`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 套件版本。

emulator -version
avdmanager --help

列出所有 avdmanager 子指令與簡短說明。

avdmanager --help

相關命令速查

關於 AVD Manager

Android Virtual Device(AVD)Manager 是驅動 Android 模擬器的工具鏈。兩個 CLI 相互協作:`avdmanager`(隨 Android SDK Command-line Tools 發佈,自 2017 年的 Studio 3.0 起)負責管理 AVD 定義;`emulator`(隨 Android Emulator 套件發佈)負責執行它們。一個 AVD 是一個設定檔(硬體、系統映像、儲存空間、skin),可開機進入基於 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 snapshot——可能含有已登入的 Google 帳號或專屬應用。

速查頁版本 1.0.0