從指令列啟動模擬器

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

Android SDK 中含有 Android 裝置模擬器,也就是可在電腦上執行的虛擬裝置。Android Emulator 可讓您在不需使用實體裝置的狀況下,也能開發及測試 Android 應用程式。

本資訊頁面說明您可以透過指令列使用 Android Emulator 的功能。如需使用 Android Emulator UI 的資訊,請參閱「在 Android Emulator 上執行應用程式」。

啟動模擬器

使用 emulator 指令啟動模擬器,做為執行專案透過 AVD Manager 啟動的替代方案。

以下是從終端機提示中,啟動虛擬裝置的基本指令列語法:

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

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

例如,如果您是透過在 Mac 上執行的 Android Studio 啟動模擬器,預設指令列會如下所示:

/Users/janedoe/Library/Android/sdk/emulator/emulator -avd Nexus_5X_API_23 -netdelay none -netspeed full

您可以在啟動模擬器時指定啟動選項,但無法在日後指定。

如要查看 AVD 名稱清單,請輸入下列指令:

emulator -list-avds

使用這個選項時,系統會顯示 Android 主目錄中的 AVD 名稱清單。請注意,您可以藉由設定 ANDROID_SDK_HOME 環境變數來覆寫預設的主目錄:即儲存所有設定與 AVD 內容的特定使用者目錄根層級。您可以在啟動虛擬裝置前,在終端機視窗中設定環境變數,或是透過作業系統中的使用者設定來設定環境變數;例如 Linux 上的 .bashrc 檔案。

如要停止 Android Emulator,只要關閉模擬器視窗即可。

安裝應用程式

除了透過 Android Studio模擬器 UI,您可以使用 ADB 公用程式來安裝應用程式至虛擬裝置。

如要使用 Adb 安裝應用程式,然後執行並測試應用程式,請按照下列一般步驟操作:

  1. 按照「建構並執行應用程式」的說明,建構並封裝應用程式至 APK。
  2. 透過上一節所述的指令列啟動模擬器,並使用任何必要的啟動選項。
  3. 使用 adb 安裝應用程式。
  4. 在模擬器上執行及測試應用程式。
    當模擬器執行時,您也可以使用 Emulator Console,視需要發出指令。
  5. 虛擬裝置會在重新啟動應用程式時,於使用者資料磁碟分區中保留應用程式,以及其狀態資料 (userdata-qemu.img))。如要清除此資料,請使用 -wipe-data 選項啟動模擬器,或是例如抹除 AVD Manager 中的資料。如要進一步瞭解使用者資料分區和其他儲存空間,請參閱下列章節。
    如要解除安裝應用程式,做法與在 Android 裝置上相同。

注意:adb 公用程式會將虛擬裝置視為實際的實體裝置。因此,您可能必須搭配某些常見的 adb 指令使用 -d 旗標,例如 install-d 旗標可用來指定要使用哪些已連結的裝置做為指令的目標。如未指定 -d,模擬器會鎖定清單中的第一部裝置。

瞭解預設目錄和檔案

模擬器會使用相關的檔案,其中最重要的是 AVD 系統和資料目錄。指定指令列選項時,這有助於瞭解模擬器的目錄結構和檔案。然而,您通常不需要修改預設目錄或檔案,

Android Emulator 採用快速模擬器 (QEMU) 管理程序。Android Emulator 的初始版本使用的是 QEMU 1 (goldfish),而較新的版本則是使用 QEMU 2 (ranchu)。

AVD 系統目錄

系統目錄包含模擬器用來模擬作業系統的 Android 系統映像檔。該映像檔具有由所有相同類型 AVD 共用的特定平台唯讀檔案,其中包括 API 等級、CPU 架構和 Android 變化版本。預設位置如下:

  • Mac OS X 和 Linux - ~/Library/Android/sdk/system-images/android-apiLevel/variant/arch/
  • Microsoft Windows XP - C:\Documents and Settings\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\
  • Windows Vista - C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

其中:

  • apiLevel 是數字 API 級別,或是預覽版本的字母。例如,android-M 表示 Android Marshmallow 預覽版本。但在發布時變成 android-23 指定的 API 級別 23。
  • variant 是系統映像檔執行的對應特定功能名稱;例如 google_apisandroid-wear
  • arch 是目標 CPU 架構;例如 x86

使用 -sysdir 選項指定用於 AVD 的不同系統目錄。

模擬器會從系統目錄中讀取下列檔案。

檔案 說明 指定不同檔案的選項
kernel-qemukernel-ranchu AVD 的二進位核心映像檔。kernel-ranchu 是最新版本的 QEMU 2 模擬器。 -kernel
system.img 系統映像檔的唯讀初始版本;具體而言,即包含系統資料庫以及對應於 API 級別和變化版本的分區。 -system
ramdisk.img 啟動分區映像檔。這是 system.img 的子集,是核心在初始時將其載入後,再啟用系統映像檔。 通常只會包含一些二進位檔與初始化指令碼。 -ramdisk
userdata.img 資料分區的初始版本,在模擬系統中會顯示為 data/,並含有該 AVD 所有可寫入的資料。在建立新的 AVD 或使用 ‑wipe-data 選項時,模擬器會使用這個檔案。詳情請參閱下列章節中的 userdata-qemu.img 檔案說明。 -initdata
-init-data

AVD 資料目錄

AVD 資料目錄 (又稱為內容目錄) 是單一 AVD 執行個體專有的資訊,其中包含 AVD 的所有可修改資料。

預設位置如下,其中 name 是 AVD 名稱:

  • Mac OS X 和 Linux - ~/.android/avd/name.avd/
  • Microsoft Windows XP - C:\Documents and Settings\user\.android\name.avd\
  • Windows Vista 以上版本 - C:\Users\user\.android\name.avd\

使用 -datadir 選項指定不同的 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 Manager 或使用 mksdcard 工具建立 SD 卡映像檔。檔案會儲存在您開發的電腦上,且必須在啟動時載入。

在 AVD Manager 中定義 AVD 時,您可以選擇使用自動管理的 SD 卡檔案,或是使用以 mksdcard 工具建立的檔案。您可以在 AVD Manager 中檢視與 AVD 關聯的 sdcard.img 檔案。-sdcard 選項會覆寫 AVD 中指定的 SD 卡檔案。

在虛擬裝置執行時,您可以使用模擬器 UI 或 adb 公用程式來瀏覽、傳送、複製,以及移除模擬 SD 卡中的檔案。不可從執行中的虛擬裝置移除模擬的 SD 卡。

如要在載入 SD 卡前將檔案複製到 SD 卡檔案中,請將映像檔安裝為迴圈裝置,然後再複製這些檔案。或者,使用諸如 mtools 套件等公用程式,將檔案直接複製到映像檔中。

模擬器會將檔案視為位元組集區,確保 SD 卡格式不會造成影響。

請注意,-wipe-data 選項不會影響此檔案。如要清除檔案,請先刪除檔案,然後使用 AVD Manager 或 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 Emulator 仍持續不斷的在開發,使其更加穩定。如要瞭解透過各種指令列選項回報的問題狀態及回報錯誤,請參閱 Android Issue Tracker

常用選項

下表列出您較常使用的指令列啟動選項。

指令列選項 說明
Quick Boot
-no-snapshot-load 執行冷啟動,並在結束時儲存模擬器狀態。
-no-snapshot-save 盡可能執行快速啟動,但不會在結束時儲存模擬器狀態。
-no-snapshot 完全停用快速啟動功能,且不會載入或儲存模擬器狀態。
裝置硬體
-camera-back mode
-camera-front mode
設定後置或前置相機鏡頭的模擬模式。這會覆寫 AVD 中的任何相機設定。

mode 可以是下列任一種值:

  • emulated:模擬器模擬軟體中的相機。
  • webcamn:模擬器使用連接至開發電腦的網路攝影機 (依照指定編號)。如需網路攝影機清單,請使用 -webcam-list 選項;例如 webcam0
  • none:停用虛擬裝置中的相機。

例如:


emulator @Nexus_5X_API_23 -camera-back webcam0
-webcam-list 列出開發電腦中可供模擬的網路攝影機。例如:

emulator @Nexus_5X_API_23 -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

指定 128 至 4096 MB 的實體 RAM 大小。例如:


emulator @Nexus_5X_API_23 -memory 2048

此數值會覆寫 AVD 設定。

-sdcard filepath 指定 SD 卡分區映像檔的檔案名稱和路徑。例如︰


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

如果找不到檔案,模擬器仍會啟動,但不會顯示 SD 卡;指令會傳回沒有 SD 卡映像檔警告。

如果您未指定此選項,則預設內容為資料目錄中的 sdcard.img (除非 AVD 指定了其他不同的內容)。 如需模擬 SD 卡的詳細資訊,請參閱 AVD 資料目錄

-wipe-data 刪除初始資料檔案中的使用者資料及複製資料。這個選項會清除虛擬裝置的資料,並將資料復原為首次定義時的狀態。系統會移除所有已安裝的應用程式和設定。例如:


emulator @Nexus_5X_API_23 -wipe-data

根據預設,使用者資料檔案為 userdata-qemu.img,初始資料檔案為 userdata.img,兩者皆位於資料目錄中。-wipe-data 選項不會影響 sdcard.img 檔。如要進一步瞭解使用者資料,請參閱「瞭解預設目錄和檔案」。

偵錯
-debug tags 啟用或停用一或多個標記的偵錯訊息。請用空格、半形逗號或欄分隔多個標記。例如:


$ emulator @Nexus_5X_API_23 -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-tag
-debug-no-tag
啟用特定的偵錯訊息類型。使用 no 表單來停用偵錯訊息類型。例如:


emulator @Nexus_5X_API_23 -debug-all -debug-no-metrics

如需標記清單資訊,請使用 emulator -help-debug-tags 指令。

-logcat logtags 開啟顯示一或多個標記的 logcat 訊息,並將其寫入終端機視窗。例如,下列指令會啟用來自所有元件的錯誤訊息:


emulator @Nexus_5X_API_23 -logcat *:e

logtags 使用與 adb logcat logtags 指令相同的格式 (如需詳細資訊,請輸入 adb logcat -help)。此為格式 componentName:logLevel 以空格或以半形逗號分隔的記錄檔篩選器清單。componentName 是萬用字元星號 (*) 或元件名稱,例如 ActivityManager、SystemServer、InputManager、WindowManager 等。logLevel 是下列其中一個數值:

  • v - 詳細資訊
  • d - 偵錯
  • i - 實用資訊
  • w - 警告記錄層級
  • e - 錯誤
  • s - 無紀錄

下列範例顯示資訊記錄等級的 GSM 元件訊息:


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

如果您未在指令列中提供 -logcat 選項,模擬器會尋求 ANDROID_LOG_TAGS 環境變數。如果 ANDROID_LOG_TAGS 定義了有效的 logtags 數值且非空白,則預設的情況下,模擬器會使用其值將 Logcat 的內容輸出至終端機。您也可以透過 Adb 將相同或其他記錄訊息重新導向至終端機。如要進一步瞭解 Logcat 和 Adb,請參閱「Logcat 指令列工具」、「透過 Logcat 寫入及檢視記錄檔」、「記錄類別」,以及「Adb 指令參考資料」。

-show-kernel 在終端機視窗中顯示核心偵錯訊息。例如:


emulator @Nexus_5X_API_23 -show-kernel

其中一個使用選項是檢查啟動程序是否正常運作。

-verbose 將模擬器初始化訊息列印至終端機視窗。例如︰


emulator @Nexus_5X_API_23 -verbose

這項功能會顯示 AVD 中定義的虛擬裝置啟動時,實際選取的檔案和設定類型。這個選項與指定 -debug-init 相同。

網路
-dns-server servers 使用指定的 DNS 伺服器。servers 是以逗號分隔的清單,最多包含四個 DNS 伺服器名稱或 IP 位址。例如︰

emulator @Nexus_5X_API_23 -dns-server 192.0.2.0,
192.0.2.255

根據預設,模擬器會嘗試偵測您使用的 DNS 伺服器,並在模擬的防火牆中設定特殊別名,以便 Android 系統直接連線至這些伺服器。使用 -dns-server 選項來指定不同的 DNS 伺服器清單。

-http-proxy proxy 透過指定的 HTTP/HTTPS Proxy 建立所有 TCP 連線。如果模擬器必須透過 Proxy 伺服器存取網際網路,您可以使用這個選項或 http_proxy 環境變數來設定適當的重新導向。例如:


emulator @Nexus_5X_API_23 -http-proxy myserver:1981

proxy 可以是 下列任一值:
http://server:port
http://username:password@server:port

http:// 前置字元可以省略。

如未提供此選項,模擬器會查詢 http_proxy 環境變數,並自動採用任何符合 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 @Nexus_5X_API_23 -netdelay gsm

模擬器支援網路節流 (限制最大網路頻寬,又稱為網路分流) 及連線延遲時間。您可以透過外觀設定或 ‑netspeed-netdelay 選項來定義。

-netfast 停用網路節流設定。例如:


emulator @Nexus_5X_API_23 -netfast

此選項與指定 -netspeed full -netdelay none 相同。以上皆是這些選項的預設值。

-netspeed speed

設定網路速度模擬。請使用下列其中一個 speed 值 (以 kbp 為單位) 指定最大網路上傳和下載速度:

  • 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 @Nexus_5X_API_23 -netspeed edge

模擬器支援網路節流 (限制最大網路頻寬,又稱為網路分流) 及連線延遲時間。您可以透過外觀設定或 ‑netspeed-netdelay 選項來定義。

-port port 設定主控台和 ADB 所使用的 TCP 通訊埠埠號。例如:


emulator @Nexus_5X_API_23 -port 5556

您電腦上執行的第一個虛擬裝置執行個體預設值為 5554。虛擬裝置通常會佔用一對相鄰的通訊埠:主控台通訊埠和 ADB 通訊埠。在一部特定電腦上執行的第一個虛擬裝置主控台,使用主控台通訊埠 5554 和 ADB 通訊埠 5555。後續的執行個體則會使用通訊埠編號加二,例如 5556/5557、5558/5559 等。範圍則為 5554 至 5682,允許 64 部虛擬裝置並行。

通訊埠指派作業通常與指定 -ports port,{port + 1} 相同。{port + 1} 必須可以使用,且保留供 ADB 使用。如已在使用任何主控台或 ADB 通訊埠,模擬器就不會啟動。‑port 選項會回報虛擬裝置正在使用的通訊埠和序號,並在您提供的值發生問題時發出警告。在模擬器 UI 中,您可以在視窗標題中看到主控台的通訊埠埠號,而您可以選取「Help」>「About」來檢視 ADB 通訊埠埠號。

請注意,如果 port 值非偶數,且位於 5554 到 5584 的範圍內,虛擬裝置會啟動,但如果您使用 adb devices 指令在模擬器啟動後啟動 ADB 伺服器,虛擬裝置會啟用,但是無法看到。因此,我們建議您使用偶數的主控台通訊埠埠號。

-ports
console-port,adb-port
設定主控台和 ADB 使用的 TCP 通訊埠。例如:


emulator @Nexus_5X_API_23 -ports 5556,5559

有效的通訊埠範圍為 5554 至 5682,允許 64 個虛擬裝置並行。-ports 選項會回報模擬器執行個體正在使用的通訊埠和序號,並在您提供的值發生問題時發出警告。

建議您盡可能改用 -port 選項。-ports 選項適用於需要特殊設定的網路設定。

如要進一步瞭解設定主控台和 ADB 通訊埠,請參閱 -port 選項。

-tcpdump filepath 擷取網路封包並儲存至檔案中。例如:


emulator @Nexus_5X_API_23 -tcpdump /path/dumpfile.cap

使用此選項即可開始擷取經模擬器虛擬乙太網路 LAN 傳送的所有網路封包。之後,您即可使用 Wireshark 等工具分析流量。

請注意,此選項會擷取所有乙太網路封包,且不限於 TCP 連線。

系統
-accel mode 設定模擬器 VM 加速功能。例如:


emulator @Nexus_5X_API_23 -accel auto

加速模擬僅適用於 x86 和 x86_64 系統映像檔。在 Linux 上,需仰賴 KVM 才能發揮作用。在 Windows 和 Mac 上,則仰賴 Intel CPU 和 Intel HAXM 驅動程式。如果您不模擬 x86 或 x86_64 裝置,可忽略此選項。

mode 的有效值如下:

  • auto - 自動判斷系統是否支援加速功能,並在可能的情況下使用 (預設)。
  • off - 完全停用,主要在偵錯時使用。
  • on - 強制加速功能。如果未安裝或使用 KVM 或 HAXM,模擬器將不會啟動並列印錯誤訊息。

詳情請參閱「設定硬體加速」。

-accel-check 檢查是否已安裝模擬器 VM 的必要管理程序 (HAXM 或 KVM)。例如:


emulator -accel-check

詳情請參閱「判斷是否已安裝 HAXM 或 KVM」。

-engine engine

指定模擬器引擎:

  • auto - 自動選取引擎 (預設)。
  • classic - 使用舊版的 QEMU 1 引擎。
  • qemu2:使用新版的 QEMU 2 引擎。

例如:


emulator @Nexus_5X_API_23 -engine auto

自動偵測應選擇在模擬特定 AVD 時提供最佳效能的值。我們建議只有在偵錯和比較時才使用 -engine 選項。

-gpu mode 選取 GPU 模擬模式。例如:


emulator @Nexus_5X_API_23 -gpu swiftshader_indirect

詳情請參閱「透過指令列設定圖形加速」。

-no-accel 使用 x86 或 x86_64 系統映像檔時請停用模擬器 VM 加速功能。這只適用於偵錯,且與指定 -accel off 相同。例如:


emulator @Nexus_5X_API_23 -no-accel

詳情請參閱「設定硬體加速」。

-nojni
-no-jni
停用 Android Dalvik 或 ART 執行階段中的擴充 Java 本地介面 (JNI) 檢查。例如:


emulator @Nexus_5X_API_23 -nojni

啟動虛擬裝置時,根據預設系統會啟用擴充 JNI 檢查。詳情請參閱「JNI 提示」。

-selinux {disabled|permissive} 在 Linux 作業系統中,將安全增強式 Linux (SELinux) 的安全性模組設為停用或寬鬆模式。例如:


me-linux$ emulator @Nexus_5X_API_23 -selinux permissive

根據預設,SELinux 會進入強制執行模式,代表系統會強制執行安全性政策。permissive 模式會載入 SELinux 政策,但不會強制執行。其只會記錄違反政策的項目。disabled 模式會停用 SELinux 的核心支援。

-timezone timezone

將虛擬裝置的時區設為 timezone,而不是主機時區。例如:


emulator @Nexus_5X_API_23 -timezone Europe/Paris

根據預設,模擬器會使用開發電腦的時區。這個選項可用來指定不同時區,或是在自動偵測功能未正常運作時使用。timezone 值必須採用 zoneinfo 格式,也就是 area/locationarea/subarea/location。例如:

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

指定的時區必須位於 Zoneinfo 資料庫中。

-version 顯示模擬器版本號碼。例如:


emulator @Nexus_5X_API_23 -version


emulator -version
UI
-no-boot-anim 在模擬器啟動期間停用啟動動畫,加快開機速度。例如:


emulator @Nexus_5X_API_23 -no-boot-anim

在速度較慢的電腦上,此選項可大幅加快啟動序列的速度。

-screen mode 設定模擬觸控螢幕模式。例如:


emulator @Nexus_5X_API_23 -screen no-touch

mode 的值可為下列任何一種:

  • touch - 模擬觸控螢幕 (預設)。
  • multi-touch - 模擬多點觸控螢幕。
  • no-touch - 停用觸控和多點觸控螢幕模擬功能。

進階選項

下列是可用的指令列啟動選項,但一般應用程式開發人員並不常用此功能。

在說明中,工作目錄是指您在終端機中正在輸入指令的目錄。如需 AVD 系統目錄資料目錄、以及儲存在其中檔案的相關資訊,請參閱「瞭解預設目錄和檔案」。

其中部分選項適合外部應用程式開發人員使用,部分選項則主要供平台開發人員使用。應用程式開發人員會在特定的 AVD 上建立與執行 Android 應用程式。平台開發人員是在 Android 系統上作業,並於不含任何預建 AVD 的模擬器中執行;他們屬於內部的 Android 團隊成員,而非外部的應用程式開發人員。

進階選項 簡短說明
-bootchart timeout

啟用 bootcharting,逾時單位為秒。部分 Android 系統映像檔中具有修改的 init 系統,該系統整合了系統 bootcharting 功能。您可以使用此選項將 bootcharting 逾時期間傳送到系統。如果您的 init 系統未啟用 bootcharting,則這個選項不會有任何作用。此選項主要適用於平台開發人員,而非外部應用程式開發人員。

例如:


emulator @Nexus_5X_API_23 -bootchart 120
-cache filepath

指定一個快取分區映像檔。提供一個檔案名稱以及資料目錄的絕對路徑或相對路徑,以設定一個永久的快取檔案。如果檔案不存在,模擬器會建立一個空白檔案。如果您不使用這個選項,則會有一個名稱預設為 cache.img 的暫存檔。詳情請參閱 AVD 資料目錄

例如:


emulator @Nexus_5X_API_23 -cache
   ~/.android/avd/Nexus_5X_API_23.avd/cache_persistent.img
-cache-size size

設定快取分區的大小 (以 MB 為單位)。如果未指定這個選項,則預設值為 66 MB。除非應用程式開發人員需要下載大於預設快取的大型檔案,否則一般不需要使用這個選項。如要進一步瞭解快取檔案,請參閱「AVD 資料目錄」。

例如:


emulator @Nexus_5X_API_23 -cache-size 1000
-data filepath

設定使用者資料分區映像檔。提供檔案名稱以及作業目錄的絕對路徑或相對路徑,以設定永久的使用者資料檔案。如果檔案不存在,模擬器就會從預設的 userdata.img 檔案建立映像檔、將其儲存在您指定的檔案名稱中,並在關機時保留使用者資料。如果您不使用這個選項,則會有一個預設名為 userdata-qemu.img 的檔案。如要進一步瞭解使用者資料檔案,請參閱「AVD 資料目錄」。

例如:


emulator @Nexus_5X_API_23 -data
   ~/.android/avd/Nexus_5X_API_23.avd/userdata-test.img
-datadir dir

使用絕對路徑指定資料目錄。詳情請參閱「AVD 資料目錄」。

例如:


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

在 64 位元平台上使用 32 位元模擬器。有時候,這個選項可用來進行測試或偵錯。例如,有一個問題是模擬器無法在 64 位元的 Windows 上執行、卻能在 32 位元上執行;這個選項即可用於偵錯這個問題進行比較。範例如下:


emulator @Nexus_5X_API_23 -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 檔案做為初始版本。指定檔案名稱,以及絕對路徑或相對於作業目錄的路徑。如果您未指定路徑,系統會將檔案置於系統目錄中。詳情請參閱「AVD 系統目錄」。

例如:


emulator @Nexus_5X_API_23 -initdata
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/userdata-test.img
-kernel filepath

使用指定的模擬核心。如未指定路徑,模擬器會查看系統目錄。如果未指定此選項,則預設為 kernel-ranchu。詳情請參閱「AVD 系統目錄」。使用 ‑show‑kernel 選項檢視核心偵錯訊息。

例如:


emulator @Nexus_5X_API_23 -kernel
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/kernel-test.img -show-kernel
-noaudio
-no-audio

停用此虛擬裝置的音訊支援。部分 Linux 和 Windows 電腦內含錯誤的音訊驅動程式,而造成各種不同症狀,例如阻礙模擬器啟動。在此情況下,您可以使用這個選項來解決問題。或者,您也可以使用 QEMU_AUDIO_DRV 環境變數來變更音訊後端。

例如:


emulator @Nexus_5X_API_23 -noaudio
-nocache
-no-cache

在沒有快取分區的情況下啟動模擬器。如果您不使用這個選項,則預設會使用一個名為 cache.img 的暫存檔案。這個選項僅適用於平台開發人員。詳情請參閱「AVD 資料目錄」。

例如:


emulator @Nexus_5X_API_23 -nocache
-no-snapshot

禁止自動載入和儲存作業,會導致模擬器執行完整的啟動序列,在關閉時會遺失其狀態。此選項會覆寫 -snapshot 選項。

例如:


emulator @Nexus_5X_API_23 -no-snapshot
-no-snapshot-load

防止模擬器從快照儲存空間載入 AVD 狀態。執行完整啟動。

例如:


emulator @Nexus_5X_API_23 -no-snapshot-load
-no-snapshot-save

防止模擬器在結束時將 AVD 狀態儲存至快照儲存空間,這代表所有變更都會遺失。

例如:


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

請勿嘗試在還原快照時立即修正 AVD 時鐘時間。這個選項在測試時非常實用,因為可避免時間突然跳轉。不過,系統大約每 15 秒仍會將時間更新傳送給 AVD。

例如:


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

在不安裝檔案的情況下啟動模擬器以儲存或載入狀態快照,強制進行完整的啟動,並停用狀態快照功能。此選項會覆寫 -snapstorage-snapshot 選項。

例如:


emulator @Nexus_5X_API_23 -no-snapstorage
-no-window

停用模擬器的圖形視窗顯示功能。在沒有螢幕的伺服器上執行模擬器時,這個選項非常實用。你還是可以透過 ADB 或主控台存取模擬器。例如:


emulator @Nexus_5X_API_23 -no-window
-partition-size size

指定系統資料分區的大小 (以 MB 為單位)。例如:


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

在啟動時設定模擬器中的 Android 系統屬性。name 必須是標示為 qemu_prop 的屬性名稱 (例如,請參考 properties_contexts 檔),其長度上限為 32 個字元、不含任何空格,且 value 必須是上限 92 個字元的字串。您可以在單一指令列中指定多個 ‑prop 選項。此選項很適合用於偵錯。例如:


emulator @Nexus_5X_API_23 -prop qemu.name=value -prop qemu.abc=xyz
-qemu args 將引數傳遞至 QEMU 模擬器軟體。請注意,QEMU 1 和 QEMU 2 可能會使用不同的引數。使用這個選項時,請確定這是指定的最後一個選項,因為之後的所有選項都會被視為是 QEMU 的專屬選項。這個選項進階程度極高,建議只由十分熟悉 QEMU Android 模擬器的開發人員使用。
-qemu -h

顯示 -qemu 說明。例如:


emulator -qemu -h
-ramdisk filepath

指定一個 ramdisk 開機映像檔。指定檔案名稱,以及絕對路徑或相對於作業目錄的路徑。如果您不使用這個選項,則預設會使用系統目錄中的 ramdisk.img 檔案。詳情請參閱「AVD 系統目錄」。

例如:


emulator @Nexus_5X_API_23 -ramdisk
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/ramdisk-test.img
-report-console socket

在開始模擬前,請向遠端第三方回報主控台通訊埠。這對於自動化測試指令碼來說非常實用。socket 必須採用下列其中一種格式:

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

如需詳細資訊,使用如取得特定選項的詳細說明中所述的 -help-report-console 選項。

-shell

在目前的終端機上建立根層級的殼層主控台。根據 adb shell 指令,其差異如下:

  • 此項目會建立一個可讓您修改系統多個部分的根層級殼層,。
  • 即使模擬系統中的 ADB Daemon 中斷,還是可以正常運作。
  • 按下 Ctrl+C (⌘C) 鍵即可停止模擬器,而非殼層。

例如:


emulator @Nexus_5X_API_23 -shell
-snapshot name

針對自動開始及儲存作業,指定快照儲存空間檔案中的快照名稱。與其執行完整的啟動序列,模擬器可以從更早的狀態快照恢復執行,且速度通常會快上許多。提供此選項時,模擬器會從快照映像檔載入該名稱的快照,並在結束時將其儲存回相同的名稱。如果您不使用這個選項,則預設為完整的啟動序列。如果指定的快照不存在,模擬器會改為執行完整的啟動序列,並執行儲存作業。

如需指定快照儲存檔案和預設檔案的資訊,請參閱 -snapstorage 選項。


emulator @Nexus_5X_API_23 -snapshot snapshot2

請務必牢記,在載入快照過程的期間,所有系統內容、使用者資料和 SD 卡映像檔都會被執行快照時保留的內容覆寫。除非您將這項資訊儲存在不同的快照中,否則之後的所有變更都會遺失。

您也可以使用 avd snapshot save name 指令在模擬器主控台中建立快照。詳情請參閱「將模擬器主控台指令傳送至虛擬裝置」。

-snapshot-list

顯示可用的快照清單。顯示出快照資料表,該表儲存在啟動模擬器使用的快照儲存空間檔案中,然後隨即結束。如果您也指定了 -snapstorage file,這個指令會顯示出儲存在檔案中的快照資料表。

例如:


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

您可以在輸出內容中使用 ID 和 TAG 欄做為 -snapshot 選項的引數。

-snapstorage filepath

指定包含所有狀態快照的存放區檔案。執行期間建立的所有快照都會儲存在這個檔案中,而且只有在模擬器執行時,系統才會還原這個檔案中的快照。如果您未指定這個選項,則預設為資料目錄中的 snapshots.img。如果指定的檔案不存在,模擬器將啟動,但不支援儲存或載入狀態快照。

例如:


emulator @Nexus_5X_API_23 -snapstorage
   ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
-sysdir dir

使用絕對路徑指定系統目錄。詳情請參閱「AVD 系統目錄」。例如:


emulator @Nexus_5X_API_23 -sysdir
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/test
-system filepath

指定初始系統檔案。請提供檔案名稱,以及絕對路徑或相對於作業目錄的路徑。如果您不使用這個選項,則預設為系統目錄中的 system.img 檔案。詳情請參閱 AVD 系統目錄。例如:


emulator @Nexus_5X_API_23 -system
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/system-test.img
-use-system-libs

在 Linux 上請使用系統 libstdc++,而不是模擬器系統的隨附版本。只有在模擬器無法正常啟動時,才使用此選項,但不一定每次都能順利執行。或者,您也可以將 ANDROID_EMULATOR_USE_SYSTEM_LIBS 環境變數設為 1。

例如:


me-linux$ emulator @Nexus_5X_API_23 -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 選項可讓您依標記指定項目,啟用或停用來自指定模擬器元件的偵錯訊息。