Android Studio 內附 Android Emulator。
25.3.0 之前的模擬器版本以 Android SDK 工具隨附的形式發布。
為了確保您擁有最新版本,請查看 SDK Manager 是否有更新。
如要下載舊版 Android Emulator,請參閱「Emulator 下載封存」。
如需 Android Emulator 25.3.0 之前的版本資訊,請參閱「Android SDK 工具版本資訊」。
如需查看已知問題和疑難排解,請參閱「Emulator 疑難排解」。
34.2.16 (2024 年 7 月 9 日)
- [修正錯誤] 摺疊/展開時 Pixel Fold 的 UI 凍結
- [修正錯誤] Android 版本的 Android Vanilla Ice Cream 並不正確 在 Mac M1 上預覽而非 API 35。
- [修正錯誤] 問題 #296162661: 在 Pixel C 平板電腦模擬器上 HasSystemFeature FEATURE_SENSOR_HINGE_ANGLE 會傳回 true
34.2.15 (2024 年 5 月 31 日)
- 修正輪轉模式和廣告客戶清理作業相關的多項當機問題
34.2.14 (2024 年 5 月 20 日)
使用 Android Studio Jellyfish 穩定版修補程式 1 進行測試。
- [修正錯誤] 內嵌模擬器的快照有時會停止運作
- [修正錯誤]「否」和「取消」按鈕在快照上無法正常運作
- [修正錯誤] 方向鍵按鈕無法運作
- [修正錯誤] 修正問題:將 GPU 模式與 ANGLE 搭配使用時,模擬器會在部分情況下啟動,並在記錄中傳回「Failed to Initial GL emulation」(無法初始化 GL 模擬) 錯誤訊息。請注意,即使透過指令列使用
-gpu swangle_indirect
選項啟動模擬器,這個版本仍可能產生這項錯誤。如果您仍想在 Windows 上使用指令列啟動模擬器,並使用這個版本轉譯軟體圖形,請使用-gpu swiftshader_indirect
- [修正錯誤] 鍵盤上的定位捷徑載入無法使用的地圖
- [修正錯誤] 設定位置資訊時,系統會「儲存路線」缺少對話方塊
34.2.13 (2024 年 4 月 30 日)
使用 Android Studio Jellyfish 穩定版進行測試。
- 更新至 Qt 6.5.3
- Google Maps API 更新在 啟動。
- 修正影響程度高的當機問題
- 修正 Pixel AVD 的多項錯誤
- 更新軟體轉譯使用的圖形程式庫
- [修正錯誤]問題 225541819 啟動 Chrome 會使 x86_64 上的模擬器異常終止
- [修正錯誤]問題 314614435
-http-proxy
切換鈕剖析錯誤
34.1.20 (2024 年 4 月 1 日)
使用 Android Studio Iguana 穩定版完成測試。
- [修正錯誤] 問題 #314614435:修正
-http-proxy
切換鈕剖析錯誤的問題
34.1.19 (2024 年 3 月 7 日)
使用 Android Studio Iguana 穩定版完成測試。
- [修正錯誤] 問題 #312677259:修正調整視窗大小後,內嵌模擬器的畫面凍結問題。
34.1.18 (2024 年 2 月 29 日)
使用 Android Studio Iguana 穩定版完成測試。
- 裝置已新增至模擬器,包括:
- Pixel Fold
- Pixel Tablet
- Pixel 8
- Pixel 8 Pro
- Pixel 7a
- gRPC 整合測試:gRPC 端點現在可供在模擬器中執行的檢測設備測試,用於測試實際情境。這項功能可讓開發人員在 Android 檢測設備測試中,安全地與 Android Emulator 代管的 gRPC 端點互動。
- 修正多項錯誤
33.1.24 (2023 年 12 月 28 日)
使用 Android Studio Hedgehog 穩定版和 Iguana Beta 1 完成測試。
- 修正問題:模擬器網路攝影機無法以 mp4 格式錄製螢幕。
- 修正問題:在螢幕錄製期間展開 Pixel Fold AVD 會當機。
- 修正問題:Pixel Fold 顯示不同的手機外觀,並顯示無法使用的已卸離鍵盤 (在 Windows、Mac Intel 和 Linux 上已修正)
- 修正問題:在獨立模式下,虛擬感應器外觀會出現故障 (在 Windows、Mac Intel 和 Linux 上已修正)
- 已修正部分當機問題,尤其是關閉模擬器時
33.1.23 (2023 年 11 月 30 日)
使用 Android Studio Giraffe 修補程式 4 和 Hedgehog 穩定版進行測試。
- 提供新的摺疊式裝置實作項目,可更妥善地模擬 Pixel Fold 裝置,且支援最新的 API 34
- 圖形後端升級:我們已為圖像後端實作 gfxstream 通訊協定,提升系統的整體圖形效能和穩定性。此外,從 API 34 的系統映像檔開始,我們導入了 Vulkan 1.3 支援
- 功能要求:提供選項,用來停用雙指撥動縮放手勢,或重新指派快速鍵
- [修正錯誤] 問題 #302562962 修正使用 MacOS Sonoma 時,模擬器網路攝影機異常終止的問題
- [修正錯誤] 問題 #293503871 修正 Emulator 重新啟動時,無法儲存「麥克風」設定的問題
- [修正錯誤] 問題 #270386314 修正在 AVD 畫面最小化後,側欄保持開啟的動畫錯誤
- [修正錯誤] 問題 #154896775 修正錯誤提交工具
32.1.15 (2023 年 8 月 29 日)
使用 Android Studio Giraffe 修補程式 1 和 Hedgehog Canary 16 進行測試。
- 符合 AAE 模擬器中感應器的 GAS HW 要求
- [修正錯誤] 問題 #266201208 無法在 API 33 上傳送希伯來文簡訊
- [修正錯誤] 問題 #257097404 在 API 29 和 30 上喚醒主機後,模擬器無法正確顯示時間
- [修正錯誤] 問題 #228201899 在 Android Emulator 擴充控制項中看不到 Google 地圖
32.1.14 (2023 年 6 月 27 日)
以 Android Studio Hedgehog Canary 8、Giraffe Beta 5 和 Flamingo 穩定版完成測試。
- 修正模擬器相機螢幕方向和變形問題。
- [修正錯誤] 問題 #257097404「模擬器在主機喚醒後無法正確顯示時間」。此錯誤在 API 29 和 API 30 仍未解決。
- [修正錯誤] 問題 #243456582「在 Mac M1 機器的模擬器中,API 30 之後的 Android 版本可能無法正確啟動」。
32.1.13 (2023 年 5 月 22 日)
以 Android Studio Hedgehog Canary 2、Giraffe Beta 1 和 Flamingo 穩定版完成測試。
- 新增對 Pixel Fold 和 Pixel Tablet AVD 的支援。
- 改善 gLinux 當機問題。
- [修正錯誤] 問題 #215231636「若模擬器的 API 為 API 30 以上,便無法在 Intel 第 12 代處理器中運作」。
- [修正錯誤] 問題 #275397905 反覆將游標焦點移入及移出模擬器時,Android Emulator M1 會發生整體當機情形。
- AVD 啟動程序的已知問題 問題 #281725854。詳情請參閱「Emulator 疑難排解」。
32.1.12 (2023 年 3 月 21 日)
使用 Android Studio Giraffe Canary 10、Flamingo RC 和 Electric Eel 修補程式 2 進行測試。
- [修正錯誤] 問題 #267647323 無法在從 Android Studio 啟動的模擬器中連上網路
- [修正錯誤] 問題 #268498686 模擬器畫面閃爍
- [修正錯誤] 問題 #270034824 更新為 33.1.1 版後,模擬器效能降低
- [修正錯誤] 問題 #225541819 啟動 Chrome 會使 x86_64 上的模擬器異常終止
- [修正錯誤] 問題 #257097404 模擬器在主機喚醒後無法顯示正確的時間
- 為 Apple M1 裝置新增當機回報功能
32.1.11 (2023 年 2 月 8 日)
使用 Android Studio Giraffe Canary 2、Flamingo Beta 1 和 Electric Eel 修補程式 1 進行測試。
- 網路速度最佳化
- 在內嵌模擬器中支援滑鼠
- Virtio-snd 改善項目
- 安裝 Android Emulator 時,在解壓縮檔案期間停用符號連結
- 修正模擬器檢查時發生的當機問題
31.3.14 (2022 年 12 月 13 日)
使用 Android Studio Dolphin、Electric Eel RC1 和 Flamingo Canary 9 完成測試。
- [修正錯誤] 登入 Play 商店時發生的 AVD 當機問題。
31.3.13 (2022 年 10 月 27 日)
使用 Android Studio Dolphin、Electric Eel Beta 2 和 Flamingo Canary 5 完成測試。
- [修正錯誤] 問題 #249948338:時區參數無法運作
- [修正錯誤] 問題 #249366543:Emulator -dns-server 選項在 API 31 後無法運作
31.3.12 (2022 年 10 月 10 日)
使用 Android Studio Dolphin 和 Electric Eel Beta 1 完成測試。
本次更新包含以下改善及修正項目:
- [修正錯誤] 問題 #247843000:AVD 相對路徑處理錯誤
- 增加 API 24 以上版本的磁碟大小
31.3.11 (2022 年 9 月 23 日)
使用 Android Studio Dolphin 和 Electric Eel Canary 10 完成測試。
本次更新包含以下改善及修正項目:
- [修正錯誤] Extended Controls 視窗中的內嵌 Emulator AVD 當機問題
- [修正錯誤] 問題 #183139207:與 Emulator 啟用麥克風相關的音訊問題
- [修正錯誤] 問題 #229764024:引發使用者介面出現行為問題的 AVD 固定式觸控錯誤
- [修正錯誤] 在 Mac M1 啟動 API 33 AVD 時發生錯誤
- [修正錯誤] 問題 #243053479:更新 Emulator 後網路速度緩慢
- [修正錯誤] 問題 #244617627:Windows 和 Linux 上的地圖位置無法運作
- [修正錯誤] 問題 #232971796:「Extended Controls」>「Phone」頁面的「call device」按鈕無法運作
- 將 Android Emulator 更新為 minigbm
- 將建構指令碼遷移至 Python3
31.3.10 (2022 年 8 月 18 日)
使用 Android Studio Dolphin Beta 5 和 Electric Eel Canary 9 完成測試。
模擬器現在已可單獨下載。如果您在使用這個最新的穩定版本期間遇到任何問題或當機情形,請回報錯誤,同時建議您前往模擬器下載封存檔,下載能夠正常運作的舊版本。
本次更新包含以下改善及修正項目:
- 改善 Windows 上的萬國碼 (Unicode) 路徑支援功能
- 模擬器關機作業較以往妥善,所以同一個 AVD 的新啟動作業現在能夠順利執行。
- 更新折疊式裝置的 AVD 設計和預設設定
- 更新 Wear 模擬器的按鈕
- 改善 gRPC 音訊串流
- 新增可調整大小的模擬器主控台指令
- 針對 API 31 修正 Chrome 的錯誤
- [修正錯誤] GmsCore v21.42.18 會導致 Google 帳戶驗證失敗
31.2.10 (2022 年 4 月 20 日)
使用 Android Studio Dolphin Canary 8 和 Chipmunk RC 1 完成測試。
本次更新包含以下改善及修正項目:
- 新增公用程式,用於載入含有備用機制的 Vulkan 函式
- [修正錯誤] 修正 GCC8 版本錯誤
31.2.9 (2022 年 3 月 23 日)
使用 Android Studio Dolphin Canary 7 完成測試。
本次更新包含以下修正項目:
- [修正錯誤] 在 M1 儲存快照時忽略記憶體壓力
31.2.8 (2022 年 2 月 7 日)
使用 Android Studio Bumblebee Patch 1 和 Chipmunk Canary 6 完成測試。
本次更新包含以下改善及修正項目:
- [修正錯誤] 無法登入應用程式
- [修正錯誤] 問題 #215368358:Intel 平台上的「ADB 重新啟動」會導致設有「vCPU 關閉要求」的 AVD 停止運作
31.2.7 (2022 年 2 月 1 日)
使用 Android Studio Bumblebee Patch 1 和 Chipmunk Canary 6 完成測試。
本次更新包含以下修正項目:
- [修正錯誤] Emulator 在 M1 裝置上發生的停止運作錯誤。
31.2.6 (2022 年 1 月 20 日)
使用 Android Studio Arctic Fox、Bumblebee Beta 4 和 Chipmunk Canary 6 完成測試。
本次更新包含以下改善及修正項目:
- Wear OS 模擬器新增了 Wear 按鈕。
- VHAL 分頁內的所有車用屬性現在皆可供編輯。
- [修正錯誤] GmsCore v21.42.18 會導致 Google 帳戶驗證失敗。
- [修正錯誤] Netshaper 和 VirtioWifi 無法順利相容。
- [修正錯誤] 事件滑鼠主控台指令無法運作。
- 本機 AVD 建立程序新增 KVM 檢查。
31.1.3 (2022 年 1 月 18 日)
本次更新包含以下改善及修正項目:
- 啟用 Fuchsia 用的主控台通訊埠。
- 調整多重顯示視窗大小時,系統會忽略螢幕方向。
- Wi-Fi:新增篩選支援功能,可篩選以 MAT MAC 位址為基準的單點傳播封包。
- Wi-Fi:修正 VMNet 使用中發生停止運作的問題。
30.9.5 (2021 年 12 月 15 日)
本次更新包含以下改善及修正項目:
- 新增可輕鬆調整為電腦或平板電腦尺寸視窗的功能。
- 新增相容主機裝置對多點觸控輸入的支援。
- VirtioWifi:新增 TAP 網路支援。
- 啟用 Wear 系統映像檔的旋轉輸入功能。
- 修正 gRPC 音訊設定問題。
- 更新 SensorReplay 模擬器播放功能,以便支援標準 Android 感應器。
- 使用 USB 透過 USB 直通將模擬器連結至周邊裝置及其他裝置。
30.4.5 (2021 年 2 月 23 日)
本次更新包含以下改善及修正項目:
- macOS:修正音訊輸入失真的問題。
- 新增使用者空間對 virtio-vsock 的支援。
- 系統映像檔之後將會使用 virtio-console 管理 logcat 和核心訊息。
- 提高 Vulkan 轉譯速度。
- 新增以快照偵錯測試失敗情形的支援。
- virtio-gpu:更新定義,以便支援最新 blob 資源列舉。
- 新增「asg」類型圖像傳輸的快照支援。
- macOS:新增對 macOS SDK 11.1+ 版本的支援。
- 預設為較新的系統映像檔啟用 KVMclock。
- 為 Wear 模擬器的心率感應器提供支援。
- 移除 libportability Vulkan 後端。
- 新增對數據機模擬器更多功能的支援。
30.0.26 (2020 年 8 月 16 日)
本次更新包含多項新功能和錯誤修正項目,並提升現有功能。
虛擬轉軸感應器和 3D 檢視等折疊式裝置支援
新增對折疊式裝置轉軸感應器的支援。本功能需使用之後的 Android 11 系統映像檔與 AVD 設定。3D 摺疊式裝置檢視畫面及轉軸參數,已整合進現有的折疊式裝置預設設定。舉例來說,以下內容可和 7.3 折疊式裝置 AVD 的
config.ini
檔案搭配使用:hw.sensor.hinge = yes hw.sensor.hinge.count = 1 hw.sensor.hinge.type = 1 hw.sensor.hinge.ranges = 180-360 hw.sensor.hinge.defaults = 180 hw.sensor.hinge.areas = 54.7-0 hw.sensor.posture_list=4, 3 hw.sensor.hinge_angles_posture_definitions=210-360, 180-210 hw.sensor.hinge.fold_to_displayRegion.0.1_at_posture=4
折疊式裝置現在也有子類型參數了。
config.ini
現已提供hw.sensor.hinge.sub_type = hinge/fold
資源。詳情請參閱「使用 Android Emulator 針對 Android 11 進行開發」網誌文章。系統即日起預設啟用轉軸感應器。
現在設定折疊式裝置後,模擬器會向訪客傳送轉軸角度感應器的更新內容和型態變更等項目。現在按下工具列的折疊或展開按鈕後,現有折疊式裝置將會更新轉軸感應器的角度與型態。
ARM64 主機模擬器
Linux 模擬器原始碼現在開始支援從 x86_64 到 arm64 主機的跨平台程式碼編譯,以便允許透過 KVM 虛擬化執行 arm64 系統映像檔。目前僅支援
-gpu swiftshader_indirect
(Swiftshader arm64 主機轉譯),不過您也可以使用主機 GPU libEGL/libGLESv2 程式庫的相容組合,只要替換其中的 lib64/gles_swiftshader,再用-gpu swiftshader_indirect
重新啟動即可。快照可能會無法運作 (在指令列中加入-no-snapshot
)。操作說明:mkdir emu cd emu repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev --depth=1 repo sync -qcj 12 cd external/qemu pip install absl-py pip install urlfetch sudo apt-get install crossbuild-essential-arm64 python android/build/python/cmake.py --noqtwebengine --noshowprefixforinfo --target linux_aarch64
我們目前正在開發 Apple Silicon 的支援功能。
virtio-gpu 支援
- 新增主機端對即將發布的 virtio-gpu 主機一致 blob 資源的支援。
- 為因應模擬器轉譯方式,我們現在會在 vCPU 執行緒內處理 virtio-gpu virtqueue,原因在於轉譯作業還是會卸載到其他執行緒。日後的系統映像檔和模擬器版本會啟用 virtio-gpu 轉譯功能。
- 在日後的系統映像檔中,模擬器將可使用以 virtio-gpu 為基礎的堆疊執行所有圖像。
其他新功能和改善項目
- Windows 現在可以透過
-qemu -usb -device usb-host,vendorid=<usb-vendor-id>,productid=<usb-product-id>
使用 USB 直通。(Linux 及 macOS 應該已經可以使用此方式) - WebRTC 程式庫更新為 M83。
- 模擬器現在開始支援在 WebRTC 容器進行音訊串流。
- 移除 darwinn 管道端點。
- 若硬體提供 CUDA VPx 解碼,則使用者現在可以透過環境變數
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
使用 CUDA VPx 影片解碼。 - macOS 使用者現在可從 Android 訪客內部使用 SSE 4.1 和 4.2。
- macOS 現在預設啟用 INVTSC,這樣做可以讓訪客的時間測量結果更準確。
- 我們現在會追蹤使用者在指標所選取的延伸控制窗格。
- 若訪客核心版本 >= 5.4 (R 系統映像檔或更新版本),則 Linux 模擬器現在會使用 KVM 半虛擬化時鐘。
- 模擬器現在會使用 LZ4 解壓縮訪客核心,以便與現行的核心管道相容。
新增主控台指令,以便取得模擬器 AVD 目錄、Studio 內嵌用途的探索檔路徑,以及快照的路徑:
adb emu avd path # Obtains path to AVD directory adb emu avd discoverypath # Obtains path to discovery file adb emu avd snapshotspath # Obtains path to snapshots folder adb emu avd snapshotpath <snapshotName> # Obtains path to the folder that stores the snapshot for the snapshot with name <snapshotName>
我們在「Extended Controls」>「Settings」中新增了隱藏目前 AVD 裝置邊框的選項,讓您輕鬆節省直向螢幕空間。為全面隱藏所有 AVD 的裝置邊框,我們提供了
NoDeviceFrame
功能旗標,只要使用含有-feature NoDevice
frame 的指令列啟動模擬器,即可啟用本功能旗標。您也可以將NoDeviceFrame = on
加入~/.android/advancedFeatures.ini
進行鎖定。如果該檔案不存在,請自行建立。在行動數據頁面中新增下拉式選單項目,讓使用者開啟及關閉計量付費支援,這個項目不需要人工管理,適用於不支援 5G 計量付費切換功能的舊版系統映像檔。
- 此外,也新增用途相同的主控台指令:
gsm meter on|off
- 此外,也新增用途相同的主控台指令:
工具鏈 / 版本升級至 C++17。
修正內容:內嵌模擬器
- 現在剪貼簿應該可以正常運作。
- 修正模擬器以小寫字元傳送大寫字元的問題。
- 修正 Windows 萬國碼 (Unicode) 路徑載入主控台權杖的問題。
- 修正 Linux 的
SO_REUSEPORT
錯誤訊息。 - 修正透過 gRPC 傳送快照指令,以及按下 Android Studio 內嵌模擬器的快照儲存按鈕時,快照會損毀的問題。
我們發現透過 Chrome 遠端桌面使用 Studio 內嵌 Linux 模擬器時,如果未設定
XDG_RUNTIME_DIR
,就會發生錯誤,且可能會因為模擬器探索檔位於XDG_RUNTIME_DIR
而導致內嵌模擬器無法顯示。您可以前往 Chrome Issue Tracker 查看相關問題的狀態。為解決此問題,模擬器現在會改回使用可能位於不同目錄 (依使用者 UID 而定) 內的探索檔:
/run/user/<uid>
。內嵌模擬器:有圓角/凹槽的裝置現在可以正確變更版面配置,藉此保留角落和凹槽的空間。此功能需要冷啟動模擬器。
gRPC 端點現在支援向裝置傳送簡訊。
一般修正項目
- 我們發現如果在啟用 Riot Vanguard 時執行 Windows 模擬器,會發生相容性問題。Windows 模擬器現在會偵測 Vanguard 防作弊系統,並會在偵測到 Vanguard 之後顯示警告訊息。
- 修正 Windows
FD_SETSIZE
錯誤。現在向回送伺服器建立非阻塞連線時,我們會使用WSAEventSelect()
,而非select()
。 - 在 Linux 模擬器中新增對 F16C CPUID 功能的支援機制,並修正無法透過 NDK 轉譯順利執行部分 ARM64 應用程式的問題;macOS/Windows 的支援機制尚在開發中。
- 修正 gpx/kml 路徑播放,使其按照時間戳記播放。
- 修正 MacOs 啟動時圖示會彈跳的問題。
- 如果
config.ini
內有hw.audioInput=no
和hw.audioOutput=no
,現在可以正確停用模擬器音訊。 - 修正以下問題:當擴充控制項視窗處於開啟狀態但未啟用,將模擬器視窗最小化後,系統會在調整模擬器視窗大小時不斷顯示擴充控制項視窗。我們會在之後的更新中完全移除此行為 (擴充控制項視窗啟用中的問題)。
- 修正在未連線到 Wi-Fi 時啟動模擬器會造成不穩定的錯誤。
- 修正當模擬器發出逾時設定為長期或無限期的殼層指令後,會在結束時停止運作的問題。
- 更新 pc-biOS 並修正問題,以便改善大型圖像傳遞至
-initrd
的支援功能,舊版 BIOS 所使用的方法效率很差。 - 修正在使用
-wifi-server-port
選項時終止會停止運作的問題。 - 現在當不受支援的選項傳遞至
-prop
(僅支援 qemu.* 屬性) 時,模擬器會列印警告訊息。 - 現在在 Windows 建構模擬器時,應該可以降低寫入檔案會發生不穩定錯誤的機率。詳情請參閱「Windows 建構操作說明」。
- 停用會發生問題的折疊式裝置 AVD 縮放按鈕。
- 模擬器現在可以正確回報裝置重新啟動後的啟動時間。
- Linux:即使 KVM 權限不足,模擬器現在可以更迅速顯示偵錯操作說明。
- 修正問題:模擬器必須加速才能啟動近期系統映像檔。
- 修正以下問題:透過啟動完成偵測工具開始執行時,會發生記憶體損毀或異常終止的情形。
- 修正以下問題:在長時間的螢幕錄影工作階段中,會發生記憶體流失的情形。
- 更新模擬器圖示,以便反映 Studio 4.1 的品牌形象。
- 改善偵測 Windows 遠端工作階段的支援功能。
修正內容:圖像及影片解碼
- 修正遊戲《狂野飆車 9》最新版本轉譯出現黑色畫面的問題。
- 移除用
NULL
清除對應緩衝區相關的大量垃圾訊息。 - 修正問題:在訪客 Vulkan 應用程式退出時卸除 Vulkan 狀態所發生的競爭狀況。
- libOpenglRender 程式庫現在內建 Vulkan ASTC/ETC2 模擬著色器。這比從檔案系統讀取更加穩定。
- 修正 Vulkan 問題:在主機執行 Vulkan 1.0 執行個體時,
vkGetImageMemoryRequirements2KHR
會錯誤清除所傳回VkMemoryRequirements2
結構體的pNext
欄位。 - 修正 Vulkan 轉譯器的記憶體流失問題。
- 修正 GLSL ES 1.00 著色器若使用
isampler2D
這類變數名稱,則無法編譯的近期迴歸問題。 - 更新 ANGLE 著色器平移工具,並修正多個問題,以便處理 Linux 可能無法編譯著色器的問題。
- 現在當基本 framebuffer blit 著色器編譯失敗,模擬器會停止運作,以便追蹤此問題。
- 更新 ANGLE 著色器平移工具,以便配合上游 ANGLE。此更新也修正了當平移和持續折疊非方形矩陣的 OpenGL ES 著色器時會發生的記憶體損毀問題。著色器平移工具現在是獨立的共用程式庫
libshadertranslator.dll
。 - 修正 Vulkan 在部分 GPU 驅動程式初始化時無法找到特定 1.1 裝置函式的問題。
- Vulkan:由於偏好使用系統 Vulkan 載入器會造成某些設定發生問題,因此我們已改回使用預先建構的載入器。我們之後會想出更好的解決方法。
- 修正使用 Vulkan 外部記憶體,而記憶體可能在主機上匯入不符記憶體類型索引時會發生的問題。
- 修正主機不支援列舉時模擬
GL_ALIASED_POINT_SIZE_RANGE
會發生的問題。 - 修正部分
GL_EXT_shader_framebuffer_fetch
相關錯誤導致部分主機 GPU、Skia 著色器無法編譯的問題。 - 由於我們已在數個版本前移除 D3D9 ANGLE 轉譯器副本,因此假如使用者介面偏好設定中已選取相關設定,我們也會自動為先前使用該轉譯器的使用者切換至 d3d11 ANGLE。
- 為 Windows 的 WGL 初始化功能新增更多偵錯資訊,方便使用者追蹤錯誤。
- 改善
hw.gltransport=virtio-gpu-pipe
使用效能,使其不會在從主機轉移到訪客時在主機自旋。 - 新增更多 OpenGLES 模擬初始化失敗時列出的偵錯記錄。
- 修正 YouTube 影片載入快照時會閃爍或無法顯示的問題。
- 由於我們發現 libvpx 的 CUDA 硬體解碼會發生問題,因此 libvpx 暫時改回使用軟體解碼。如果主機端已實作支援的 CUDA 硬體解碼,可以透過環境變數
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
重新啟用 libvpx 的硬體解碼。
30.0.10 (2020 年 4 月 30 日)
本次更新內含直接在 Android Studio 和預設啟用任意形式視窗模式的虛擬裝置執行模擬器的支援功能。
在 Android Studio 內執行 Android Emulator
Android Emulator 現在可以直接在 Android Studio 執行。這項功能可讓您節省螢幕空間、使用快速鍵在模擬器和編輯器視窗之間快速瀏覽,以及將 IDE 和模擬器工作流程彙整到單一應用程式視窗。
任意形式視窗模式
只要您在 Android Studio 建立虛擬裝置時,選擇 13.5 吋任意形式平板電腦硬體設定檔,現在就可以建立啟用任意形式視窗模式的 AVD。此硬體設定檔須使用 Android 11 開發人員預覽版 3 或更高版本的系統映像檔。
已知問題
由於將焦點轉移至視窗管理員時會發生問題,因此調整任意形式視窗大小的功能目前無法正常運作。我們會在之後的 Android 11 系統映像檔版本處理此問題。
30.0.0 (2020 年 2 月 19 日)
本次更新內含 Android 11 (API 級別 30) 系統映像檔,並改善了 AARM 二進位檔的執行效能。
Android 11 系統映像檔
現在選取任一種可供使用的 API 級別 30 的系統映像檔,即可建立執行 Android 11 的 AVD:
- x86:內含 x86 及 ARMv7 ABI。
- x86_64:內含 x86、x86_64、ARMv7 及 ARM64 ABI。
支援 Android 9 及 11 系統映像檔上的 ARM 二進位檔
如果由於您的應用程式需要使用 ARM 二進位檔,導致您先前無法使用 Android Emulator,您現在可以透過 Android 9 x86 系統映像檔或任何 Android 11 系統映像檔執行應用程式,也不必再下載特定的系統映像檔來執行 ARM 二進位檔。這些 Android 9 及 Android 11 系統映像檔預設支援 ARM,也能提供遠比其他完全 ARM 模擬更優異的效能。
已知問題
- 部分 ARMv7 二進位檔無法在 Android 11 x86 及 x86_64 系統映像檔上執行。建議若要指定 Android 11,請針對 ARM64 進行建構。
29.0.11 (2019 年 5 月 29 日)
本次更新包含以下改善及修正項目:
- Windows:模擬器現在會使用我們釋出的
libgcc
DLL,而不會以靜態方式使用libgcc
編譯。 - Linux:新增 gRPC API 的 Logcat 支援。若要進一步瞭解 gRPC,請參閱「gRPC 串流模擬器 (Linux)」。
- 模擬器現在內附 32 位元 x86 訪客用的無頭版本 (
qemu-system-i386
)。有了此功能,使用者透過該無頭版本即可用 API 級別 26 及更低級別執行 x86 32 位元圖像。請使用 API 27 及更新級別的 32 位元 x86 訪客注意,這些系統映像檔的使用者空間雖然是 32 位元,但核心卻是 64 位元,因此模擬器使用 64 位元引擎 (qemu-system-x86_64
)。Android Studio 會按照核心選擇模擬器引擎。 - 您現在可以用
ANDROID_QT_LIB_PATH
環境變數指定自訂 Qt 程式庫路徑了。 - 現在起,如果模擬器目錄內有 QEMU1 執行檔 (
emulator[64]-[x86|arm|etc]
),即可透過使用 QEMU1 的舊版二進位檔執行模擬器。 - Windows:修正模擬器有時無法啟動,並顯示「vCPU 關閉要求」訊息的問題。
- 修正問題:在 Vulkan 中模擬壓縮紋理時,會出現多餘的管道屏障。
- 修正當使用區塊傳送編碼時,HTTP Proxy 要求出錯的問題。詳情請參閱「修訂版本詳細資料」。
29.0.9 (2019 年 5 月 7 日)
本次更新包含以下修正項目:
- Windows:修正虛擬場景相機及網路攝影機無法在模擬器中運作的問題。
29.0.8 (2019 年 5 月 6 日)
本次更新包含以下改善及修正項目:
- 新增多個虛擬硬體螢幕的支援,讓訪客服務列出每個螢幕並進行設定。日後的模擬器系統映像檔更新將會納入多個虛擬硬體螢幕。
- 新增指令列選項:
-delay-adb
。此選項會封鎖 ADB 封包處理,直到訪客啟動 (冷啟動) 完畢為止。假如您在持續整合環境中使用模擬器,而該環境可在重新啟動模擬器的同時使用 DDMS,這個選項可協助您解決可能發生的問題。 - 修正載入快照時,
glIsRenderbuffer
可能會回傳錯誤內容值的錯誤。 - 修正 Android 訪客重新啟動時出現過時狀態的部分問題。
- Windows:修正因 Windows 使用者名稱內含非 ASCII 字元或空格,而導致模擬器無法啟動的問題。
已知問題
- 由於 Automotive 系統映像檔目前尚未支援快照,因此已停用這些系統映像檔的快照使用者介面。
29.0.6 (2019 年 5 月 1 日)
本次更新內含多種新功能,並改善了現有功能及修正錯誤。
移除 QEMU1 及 32 位元 Windows 支援
為有效維護模擬器,我們不再提供 QEMU1 和 32 位元 Windows 二進位檔。如果您使用的是 32 位元 Windows 作業系統,就無法升級至 29.0.6 版。
Android Q 系統映像檔使用條件
如果想執行使用 Android Q 系統映像檔的 AVD,則必須使用 29.0.6 (目前發布版本) 或更高的版本。
Project Marble 改善項目
本次更新涵蓋了我們在 2018 年 11 月 Android 開發人員高峰會所宣布 Project Marble 計畫的後續進展。若想詳細瞭解先前版本所改善的 Project Marble 內容,請參閱「Android Emulator:Project Marble 改善項目」。
在本次更新的多數 Project Marble 項目中,我們專注於減少模擬器的資源用量,例如模擬器閒置時的 CPU 用量。本次更新變更內容也讓模擬器適合在更多種環境下運作,並改善了一般品質問題。
以下各節將說明本次更新內含的 Project Marble 改善項目:
改善主機音訊行為
從 28.0.3 版本起,模擬器會預設封鎖主機的音訊輸入。
如要使用主機音訊資料,可以依序前往「Extended Controls」>「Microphone」,然後啟用「Virtual microphone uses host audio input」選項。每次重新啟動模擬器後,系統都會自動停用此選項。
使用指令列時,您也可以利用 -allow-host-audio
選項啟用主機音訊,並使用以下 ADB 指令分別開啟或關閉主機音訊資料:
adb emu avd hostmicon
adb emu avd hostmicoff
改善無頭模擬器版本
從 28.0.25 版本起,模擬器會內附無頭版本選項,可以執行沒有使用者介面的版本。無頭版本可以協助您為 Docker 和持續整合 (CI) 工作流程設定模擬器。
本次更新進一步改善模擬器,使其在執行上可以儘量減少依附元件。在 Linux 上的無頭版本不再內含 pulseaudio
或 libX11
程式庫。系統需依賴,而模擬器內未封裝的共用程式庫已縮減為以下清單:
Linux-vdso.so.1
Libutil.so.1
Libm.so.6
Libdl.so.2
Librt.so.1
Libpthread.so.0
Libgcc_s.so.1
Libc.so.6
ld-linux-x86-64.so.2
Qt 使用者介面程式庫升級為 5.12 LTS
本次更新內含以下 Qt 5.12 LTS 版本所提供的改善項目:
- 為避免在啟動特定系統映像檔時造成 Qt
libpng
解碼停止運作,模擬器現在會使用自己的libpng
複本解碼 PNG 圖像。 - 為解決部分 Linux 安裝內含部分不相容 Qt 依賴的程式庫版本的問題,現在模擬器內已封裝
libfreetype
、libsoftokn
、libsqlite3
與libxkbcommon
。 - 模擬器現在會透過平台原生的視窗化程式庫擷取螢幕尺寸,而不再使用可能會回傳錯誤結果的 Qt 程式庫。
冷啟動後自動進行 CPU 最佳化
為解決 CPU 使用率問題,模擬器現在收到 boot complete
信號後,將於冷啟動時執行以下 ADB 指令:
adb shell settings put screen_off_timeout 214783647
- 這個指令會增加螢幕關閉逾時,以便在未充電的電池模式下使用模擬器。大幅降低電池模式下的背景 CPU 使用率。
- 在 AC 充電模式下,應用程式更新等 GMSCore 背景作業可能會不發出警告就占用裝置的所有 CPU 核心,進而占用使用者的機器。
adb shell pm revoke com.google.android.googlequicksearchbox android.permission.RECORD_AUDIO
- 這個指令會撤銷 Google 搜尋應用程式的麥克風權限,以便在 Google 搜尋應用程式運作時大幅降低主畫面和啟動器的背景 CPU 用量。
- 這個指令會跟模擬器預設為主機停用主機音訊的行為一起執行。另外,這個指令也能自動提供 28.0.23 版本中啟動字詞偵測所說明的 CPU 使用率緩解效果。
新的效能監控用環境變數
您現在可以使用兩個新的環境變數,針對 模擬器的效能和資源用量。
SHOW_PERF_STATS=1
- 這個環境變數可以讓您追蹤 CPU 和 RAM 的使用率。RAM 使用率追蹤可以分為圖像使用率及總常駐記憶體。
ANDROID_EMU_TRACING=1
- 這個環境變數可以列印每個需要長時間 (超過 1 毫秒) 的輸入內容或圖像作業。
- 我們也會使用這個環境變數協助診斷 Windows 使用者比 macOS 或 Linux 使用者更常遇到資源浪費 (遺失影格) 的問題。
Project Marble 一般改善項目
本次更新也提供以下 Project Marble 計畫的一般改善項目:
- 現在使用下列主控台指令,即可立即暫停模擬器內的所有 vCPU:
adb emu avd pause
adb emu avd resume
- 大幅降低 OpenGL 繪圖負擔。改善後可以降低模擬器播放動畫時的 CPU 使用率。
- 還原對主系列 QEMU e1000 虛擬網路裝置的支援。您可使用這類裝置在橋接網路環境中設定模擬器。在橋接網路環境中,模擬器會顯示在主機網路上,而主機網路則會顯示在模擬器上。
- 現在系統會使用適合 QEMU 2.12 的二進位檔啟動模擬器。
- 影片編碼及解碼的
ffmpeg
版本升級至 3.4.5。 - 將以
select()
為基礎的主要迴圈替換為以kqueue
為基礎的主要迴圈,以便大幅降低 macOS 內 QEMU 主要迴圈 I/O 的負擔。 - 將 Logcat 緩衝區空間擴充為 2 MB,藉此處理用模擬器執行 logccat 時會不穩定發生未預期 EOF 的問題。
- 模擬器現在預設會匯出
LC_ALL=C
環境變數。這項變更可解決使用不同語言代碼執行模擬器時,發生當機與不相容情形的問題。 - 您現在可依序點選「Extended Controls」>「Settings」>「Advanced」>「Performance Stat」以存取效能統計資料,藉此追蹤模擬器的 CPU 和 RAM 用量。如果模擬器似乎使用過多 CPU 或 RAM,請用這些統計資料快速診斷問題。
glReadPixels GL_IMPLEMENTATION_COLOR_READ_TYPE
現在會使用主機 GPU 的結果,而不會使用模擬結果。這項變更可協助解決因讀回格式不正確而導致無法顯示映像檔和資產的問題。- 新增對 OpenGL ES 擴充功能
GL_EXT_texture_format_BGRA8888
及GL_APPLE_texture_format_BGRA8888
的支援,前提是主機需支援這些擴充功能。 - Bugreport 使用者介面新增更多診斷資訊。另外,您也可以用以下指令從主控台存取錯誤報告:
telnet localhost 5554
avd bugreport
- 在 Android Q 系統映像檔上,模擬器的最低 RAM 大小已增加至 2 GB。
- 增加當 OpenGL 或管理程序啟動失敗時所產生的記錄及列印內容。
- 如果模擬器無法啟動 AVD 的並行
-read-only
執行個體,則模擬器現在會另外在 3 秒內嘗試重新啟動-read-only
AVD 3 次。這項變更可以在 AVD 其他可寫入執行個體尚未清除過時檔案時,增加模擬器啟動該 AVD 並行-read-only
執行個體的機率。 - 隨著之後的系統映像檔,模擬器將可支援 Hardware Composer 2.0。這項變更應該可以降低執行大部分動畫時的驅動程式負擔。
- 模擬器版本現在會以 CMake/Ninja 為依據。
- 已還原模擬器擴充控制項使用者頁面內,鍵盤快速鍵表格內的分隔線。
- 使用者現在可以選擇參加每隔 10 秒為我們的團隊提供一次 CPU 和 RAM 使用率指標。我們會運用這些指標,根據使用者的不同用途加強收集模擬器資源用量相關資料,以提升模擬器的效能和回應能力。
Project Marble 一般修正項目
本次更新也提供以下 Project Marble 計畫的一般修正項目:
- 修正以下問題:在搭載 Intel GPU 的系統上使用 Android Q 系統映像檔時,會出現跳動和錯誤畫面。
- 修正搭配 Pixel 2 XL 外觀 (或任何有凹槽或圓角的外觀) 使用 Android Q 系統映像檔時,會顯示黑色畫面的問題。
- 修正
-partition-size
指令列選項無法設定資料分區大小的問題。 - 修正 Linx 模擬器 pulseaudio 有時會自旋並佔用所有 CPU 核心的問題。
- 修正處理壓縮材質時會出現越界記憶體存取的問題。
- 修正更新特定 gralloc 緩衝區 (使用 RGB 565、RGB10A2、RGB(A)16F 格式) 時,主機的
glTexSubImage2D
內會發生 GL 錯誤的問題。 - 修正顯示問題 複製到 Android Q 系統映像檔,其中包含通知欄 幾何圖形是以不當的實例除數設定轉譯。
- 修正以下問題:Qt 遺失信號或在啟動時發生不穩定、不一致的狀態,導致啟動時發生難以重現的當機和停止運作情形。
- 修正多種並行問題。我們現在可以建構含有 ThreadSanitizer (TSAN) 的 Linux 模擬器,輕鬆找出用其他方式難以重現的錯誤。
- Linux 使用者:我們發現在部分主機核心上,訪客 Android 核心可能會在 KVM 發生錯誤並退出,並會顯示一般硬體錯誤。模擬器現在會在發生此情形時
abort()
,以便改善偵錯能力 (舊版模擬器會直接停止運作)。 - Linux 使用者:為方便進行持續整合設定,您可以使用新的
-stdouterr-file <file-name>
指令列選項,同時將stdout
和stderr
重新導向至檔案。 - 修正
SO_REUSEADDR
錯誤使用的問題。詳情請參閱「修訂版本詳細資料」。 - 修正以下長期問題:在 Windows 模擬器中,如果使用者名稱內含空格,會無法啟動 ADB 指令等子程序。
- 修正 HAXM vCPU 執行緒中缺少 RCU 初始化的問題。這項修正可能也可以解決部分停止運作及競爭狀況。
- 修正問題:使用新版 Android Q 系統映像檔,透過快照使用者介面以特定模式儲存及載入快照時,會發生當機。
- 修正以下問題:如果系統儲存快照時,AR 巨集正在執行,則透過該快照初始化模擬器時,虛擬場景相機會顯示空白。
- 修正部分遠端桌面使用者在 Linux 啟動模擬器時會出現黑色畫面的問題。為了避免發生此問題,模擬器現在會明確設定
MESA_RGB_VISUAL
。詳情請參閱「修訂版本詳細資料」。 - 修正問題:電視 AVD 會顯示旋轉按鈕。
- 修正以下問題:如果將模擬器設為一律顯示在最上層,每次旋轉模擬器時都會顯示擴充控制項視窗。
折疊式裝置硬體設定檔
模擬器現在內附折疊式裝置的硬體設定檔。如果您想使用這些新的硬體設定檔,必須使用 Android Studio 3.5 Canary 10 或更高的版本。
您可以使用兩種折疊式裝置硬體設定檔建立 AVD:
- 7.3 吋折疊式裝置:未折疊時 1536x2152,折疊後 4.6 吋 840x1960
- 8 吋折疊式裝置:未折疊時 2200x2480,折疊後 6.6 吋 1480x2480
使用以上任一種硬體設定檔執行模擬器時,您可透過模擬器工具列中的「折疊和展開動作」、「控制台指令」或以下鍵盤快速鍵折疊及展開裝置:
- 折疊:
Ctrl + F
(macOS 為Command + F
) - 展開:
Ctrl + U
(macOS 為Command + U
)
AR 巨集
模擬器現在會內附 AR 巨集,以便協助您測試常見的 AR 操作。舉例來說,您可以使用巨集將所有裝置的感應器重設為預設狀態。
詳情請參閱「使用巨集測試常見的 AR 操作」。
Vulkan 支援 (Windows、Linux)
Windows 及 Linux 使用者現在透過相容的系統映像檔 (Vulkan 1.1 需用 Android Q Beta 3 或更高版本,Vulkan 1.0 需用 Android Q Beta 2) 及相容的主機 GPU (包括 2014 年及之後出廠的多數 Intel、NVIDIA 與 AMD GPU),即可使用 Android Emulator 測試 Vulkan 1.1 以下的 Vulkan 應用程式。
若要啟用 Vulkan 支援,您必須在 ~/.android/advancedFeatures.ini
檔案中新增以下功能旗標 (若無此檔案,請建立該檔案):
Vulkan = on
GLDirectMem = on
ROM 開發人員初步支援
如果 ROM 開發人員透過 Android 開放原始碼計畫 master
分支版本建構 sdk_phone_x86
或 sdk_phone_x86_64
(userdebug
、eng
變化版本) 目標,現在就可以執行已啟用 Vulkan 的模擬器。
本支援功能尚為實驗功能,主要供系統映像檔、驅動程式及遊戲引擎的開發人員使用。目前尚缺乏許多擴充功能。不過,此功能已支援 HOST_COHERENT
記憶體,也應該可以執行 Vulkan API 教學課程範例了。
如果您使用的是 Linux,可以透過下列指令試用這項功能:
mkdir aosp-master
cd aosp-master
repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1
repo sync -c -j12
. build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
make -j12
emulator -no-snapshot -feature Vulkan,GLDirectMem
透過 Vulkan 進行 Skia 算繪
透過 GL_EXT_memory_objects
擴充功能,支援 Vulkan 的 NVIDIA 及 AMD GPU 也能支援 OpenGL 的零複製互通性。模擬器可以利用此功能完整轉譯使用 Skia Vulkan API 的 Android 使用者介面。
如果您有支援 Vulkan 的 NVIDIA 或 AMD GPU,請用相容的系統映像檔 (Android Q Beta 3 或更高版本),並用以下指令測試 Skia 轉譯:
adb shell
su
setprop debug.hwui.renderer skiavk
stop
start
Vulkan macOS 支援
macOS 支援功能尚為實驗功能,但是模擬器已經內附 Swiftshader、MoltenVK,以及 libportability (gfx-rs) API。您可以藉由設定以下環境變數測試這些 API:
- Swiftshader:
ANDROID_EMU_VK_ICD=swiftshader
- MoltenVK:
ANDROID_EMU_VK_ICD=moltenvk
- libportability:
ANDROID_EMU_VK_ICD=portability
已知問題
HAXM 有時無法將 Vulkan 一致記憶體對應到訪客,並會關閉模擬器。之後的 HAXM 更新將會解決此問題。
gRPC 串流模擬器 (Linux)
我們會嘗試讓主機 GPU 得以在最多種的執行環境下轉譯並進行互動,讓模擬器儘可能有更多元的使用方式。我們的持續整合和遠端桌面使用者長期受到以下問題困擾:
- 如要以程式輔助方式將輸入指令傳送至模擬器,就必須執行會產生高負載的 ADB 殼層指令,或使用速度較快但無法搭配特定網路設定運作的 telnet 控制台。
- CI 使用者通常會用無頭模式執行模擬器,而難以注意到需要螢幕才能顯示或互動的問題。
- GPU 轉譯功能通常需要與主機的非虛擬螢幕相關聯,因此遠端桌面使用者在使用主機 GPU 轉譯功能時,通常無法與模擬器互動。
為解決此問題,當在 Linux 機器上執行模擬器時,模擬器現在會提供 gRPC 服務。gRPC 是 RPC 的一般架構,可透過 HTTP 使用。
根據預設,系統會停用模擬器 gRPC 服務,但您可使用以下指令列選項啟用該服務,其中 <port>
是模擬器提供 gRPC 要求的通訊埠 (通常為 5556
):
-grpc <port>
服務啟動後,即可從用戶端發出 gRPC 指令。目前的指令集允許傳送輸入事件及接收螢幕截圖。這些指令可協助解決以下問題:
- 您可以藉由 HTTP 以低負擔的方式傳送輸入指令至模擬器。HTTP 也能透過其他網路設定傳送指令。
- 即使模擬器在無頭模式下執行,仍然可以傳送螢幕截圖指令查詢目前的畫面。為了便於互動,您也可以將輸入事件回傳給模擬器。
- 遠端桌面使用者可以在啟用 GPU 加速轉譯功能的主要螢幕上,以無頭模式執行模擬器,同時使用 gRPC 取得螢幕截圖及傳送輸入事件,以便與模擬器互動。
如想瞭解可用指令的完整清單,請參閱此份 protobuf。
為協助您開始使用 gRPC,我們提供一些範例用戶端供您參考。
目前提供以下範例:
- 以 Go 為基礎的服務,可用於查詢模擬器狀態。
- 可示範如何透過螢幕截圖及輸入 RPC 進行遠端互動的 React 應用程式。此範例須使用 3.7.0 或更高版本的 protobuf。
- 可查詢模擬器 VM 設定,然後傳送一系列指令的 Python 範例。
28.0.25 (2019 年 3 月 29 日)
本次更新包含以下改善及修正項目:
無頭模擬器版本
由於系統隱含支援 Qt 及其共用程式庫依附元件的期望 (此外尚有其他問題),致使模擬器難以按照 Docker 和其他持續整合 (CI) 工作流程進行設定。
為解決此問題,我們首先為模擬器啟動器加入變數,以及可不依賴 Qt 執行的 QEMU 執行檔。在 Linux 上仍然提供 libX11
的連結,但我們希望可以儘快移除此連結。
如要使用以無頭模式執行的模擬器,請照常透過指令列執行模擬器,不過要將模擬器二進位檔叫用改成 emulator-headless
。詳情請參閱「28.1.8 Canary 版本更新」。
- 修正 Intel GPU 使用 Android Q 系統映像檔時會出現跳動及錯誤畫面的問題。
- 修正使用 Pixel 2 XL 外觀執行 Android Q 系統映像檔時會顯示黑色畫面的問題。
- 現在系統會使用最新的 BIOS 二進位檔啟動模擬器。本項變更可協助減少在 Windows 啟動模擬器時,有時會發生「vCPU 關閉要求」錯誤的情形。
- 向後移植「透過快照繼續使用 Android Q 系統映像檔會顯示錯誤內容」問題的修正項目。
- 使用者遇到「未授權」模擬器問題
這是因為平台工具 28.0.2 的 ADB 不相容。您現在可以透過模擬器安全使用 Platform-Tools 28.0.2 的 ADB 了。如果遇到「未授權」的模擬器問題,請按照以下疑難排解步驟操作:
- 結束所有模擬器。
- 刪除
~/.android/adbkey
和~/.android/adbkey.pub
檔案。 - 執行以下指令:
adb kill-server
- 執行下列指令:
adb devices
- 抹除 AVD 資料。
- 重新啟動模擬器。
28.0.23 (2019 年 1 月 29 日)
本次更新包含以下改善及修正項目:
預設停用主機音訊輸入
近期的 Reddit 文章 詳細說明訪客 Android 作業系統會如何使用主機麥克風 ,即允許使用「Ok Google」讓生成式 AI 工具發揮極大功用我們對發生此問題非常抱歉,並會和 Android 團隊合作,確保系統映像檔也會停用啟動字詞偵測功能。
為解決此問題,我們已變更下列項目:
- 現在系統預設將實際主機音訊資料設為靜音。訪客使用麥克風時,系統會傳輸靜音,而不會傳輸主機音訊。
- 現在如要使用主機音訊資料,可以依序前往「Extended Controls」>「Microphone」,然後啟用「Virtual microphone uses host audio input」選項。每次重新啟動模擬器後,系統都會自動停用此選項。
更新 CPU 使用情況調查方式
在 Project Marble 調查期間,我們發現模擬器 CPU 用量偏高的情形一般可歸為以下三種類別:
閒置時:自動更新應用程式在 Play 商店的圖片
我們發現,即使使用者尚未登入,所有安裝的應用程式依然會在隨機間隔時間後進行更新。這段期間內,GMSCore 及 dex2oat 的 CPU 使用率會攀升到核心數量 x 100% (一般最高可到 400%)。您可以在 Play Store 應用程式內停用自動應用程式更新功能,藉此減緩此問題。
閒置時:偵測啟動字詞
在前景未執行任何應用程式且停留在主畫面時,CPU 用量可能會大幅提升 (一般為 25% 以內,最高可達 50%)。這是由於啟動字詞偵測功能會持續偵測主機的緣故。停用主機音訊輸入無法減緩此問題,因為 CPU 成本來自於從主機傳輸到訪客所耗費的時間。不過,您可以撤銷 Google 應用程式的麥克風權限,即可減緩此問題。
若為活動中,偶爾在閒置時:動畫
高 CPU 使用率的第三個原因是動畫。我們發現最佳化圖形驅動程式堆疊可以減少 CPU 用量,即使模擬器並非處於閒置狀態也一樣。我們將會逐步透過 Project Marble 推出圖像驅動程式的最佳化。
28.0.22 (2018 年 12 月 21 日)
本次更新包含以下改善及修正項目:
- 修正長期以來在部分設定下,Mac 模擬器進行 Quickboot 儲存時會重新啟動或發生核心錯誤的問題。(問題 120951634)
- 使用對應檔案作為 RAM 快照時,模擬器會在結束時明確取消檔案對應。
28.0.20 (2018 年 12 月 11 日)
本次更新包含以下改善及修正項目:
- 修正問題:特定型號的 Intel GPU 在 Windows 上載入快照時,會導致模擬器凍結。
- 修正當使用非標準
ANDROID_SDK_HOME
位置時,會導致進入unauthorized
ADB 裝置狀態的問題。 - 修正問題:在 Windows 已停用 CPU 加速功能時啟動系統映像檔,會造成模擬器停止運作。
- 修正像素化模擬器顯示問題。現在應該可以正常使用降低取樣功能了。
- 修正 macOS 10.14+ 中,由於和新的無障礙功能安全性設定之間的互動,導致虛擬場景相機 mouselook 控制變得過度敏感的問題。
- 修正可能導致模擬器時鐘偶爾變更時間的時區計算錯誤。
- 修正多個 cocos2d 及 Unreal 引擎應用程式的轉譯問題。
- 模擬器新增對 Wi-Fi 點對點的支援。如果使用最新的 Pie Play 商店映像檔,即可透過 Wi-Fi 讓兩個模擬器彼此直接通訊。若要使用 Wi-Fi 點對點,請用相同的
-wifi-server-port
和-wifi-client-port
引數啟動兩個 AVD:emulator @<server-avd-name> -wifi-server-port 9999
emulator @<client-avd-name>-wifi-client-port 9999
- 找出不相容的畫面尺寸,並按照 Android 訪客的相機設定動態調整大小,以支援更多 Windows 系統的網路攝影機。
28.0.16 (2018 年 11 月)
本次更新內含多種新功能,並改善了現有功能及修正錯誤。
資源使用情況
模擬器目前已降低整體 RAM 使用率,特別是使用 API 級別 28 以上系統映像檔時。這些系統映像檔內附改善過的訪客端圖像驅動程式記憶體用量。
此外,我們還改善了以下項目的資源用量:
- 降低長期測試下的模擬器記憶體用量。如果您在長期測試期間依然會遇到記憶體用量問題,請至 Issue Tracker 建立問題並說明使用案例。
- 降低執行有動畫的應用程式時的 CPU 使用率。
- 修正 QEMU AIO 結構定義在 Windows 可能發生流失狀況的問題。
並行執行多個單一 AVD 執行個體
您現在可以啟動同一個 AVD 的多個例項,並讓這些例項並行執行。在第一個執行個體之後啟動的執行個體都屬於唯讀性質,系統會在結束後捨棄這些執行個體對訪客虛擬磁碟做出的變更。
如要同時執行相同 AVD 的多個執行個體,請在啟動第一個執行個體後,在使用 -read-only
標記的指令列中啟動所有執行個體。
這項功能的運作原理是複製 Android 映像檔可寫入部分相關的 QCOW2 檔案。為協助您管理磁碟空間,我們也隨附了 qemu-img
指令列工具,讓您在啟動多個執行個體之前預先修訂 QCOW2 檔案。
此外,如果將多個 AVD 例項搭配檔案型訪客 RAM 快照功能使用,這些 AVD 例項會將主要 AVD 的 Quickboot 快照做為「寫入時複製」訪客 RAM 的共同來源來分享。這項屬性代表多個例項會共享大量共用的 RAM。您可以用此功能執行需要多個裝置並行執行的測試。
歡迎提出意見回饋,讓我們瞭解您在正常互動或持續整合工作流程中發生的可能使用案例。請到 Issue Tracker 建立或認同問題。
檔案型訪客 RAM 快照
藉由預先配置並將訪客 RAM 對應為檔案,模擬器現在可以在執行階段儲存 Quickboot 快照,而不需在結束時處理所有工作。如果您會在關閉模擬器時遇到儲存時間過久的問題,只要啟用這項功能即可改善 Quickboot 效能。根據預設,系統會在結束時儲存 Quickboot 快照,並在每次暫停及喚醒實際裝置等情況下再次載入。
由於現在系統預設會自動儲存 Android 訪客 RAM,因此如果您要定義裝置狀態,並從該狀態重複載入,就必須告知模擬器在每個工作階段結束後捨棄變更。您可以選擇下列其中一種操作方式:
- 從指令列啟動模擬器時,請用
-no-snapshot-save
或-read-only
旗標。 - 依序前往「Extended Controls」>「Snapshots」>「Settings」,然後將「Auto-save current state to Quickboot?」切換為「No」。
- 選取這個選項後,您必須重新啟動模擬器。如果模擬器設定為自動儲存,您可以透過執行以下指令設定檢查點:
敬上 執行這個指令後,模擬器的 Quickboot 快照就會保留下來 檢查點。再度執行這個指令即可從檢查點載入模擬器。adb emu avd snapshot remap 0
如之前方式透過快照使用者介面功能擷取及載入的快照,無檔案對應。
因為這大幅改變了 Quickboot 的運作方式,因此我們非常想瞭解您的回饋意見,看看是否有改善 Quickboot 效能,還有您在使用時所碰到的問題類型。如果遇到任何問題,只要在 ~/.android/advancedFeatures.ini
檔案中加入以下指令列,即可停用此功能:
QuickbootFileBacked = off
如果您是透過快照啟動模擬器 (使用 -snapshot
指令列選項或透過 AVD Manager 的快照啟動),模擬器會停用自動儲存 Quickboot 快照以及在結束時儲存 Quickboot 快照的功能。這樣做可以降低 Quickboot 遭到不小心覆寫的機會,也能避免出現不使用檔案型 Quickboot 快照的緩慢備援路徑。
QEMU 2.12
我們已重訂 QEMU 變化版本基底,從 QEMU 2.9 改為 QEMU 2.12。本次更新內含下列 QEMU 變更內容:
- https://wiki.qemu.org/ChangeLog/2.10
- https://wiki.qemu.org/ChangeLog/2.11
- https://wiki.qemu.org/ChangeLog/2.12
以下是部分會對 Android Emulator 造成影響的重大變更內容:
- x86:
gdbstub
現在會提供 SSE 註冊存取權了。 - 磁碟映像檔:新增映像檔鎖定功能並預設為啟用。除非選項另有其他設定,否則只要主機支援 OFD 或 posix 鎖定,多個 QEMU 程序便無法寫入同一個映像檔。
qemu-img: qemu-img resize
支援預先配置新映像檔內容。qemu
及qemu-img
現在支援 QCOW2 縮小了。
無障礙功能
- 修正螢幕閱讀器相關問題,並在螢幕錄影器和快照使用者介面中為這些工具新增更完善的支援。
- 讓 Quick Boot 通知圖示對色盲使用者更友善。
圖像
- 修正 OpenGL ES vertex 陣列指標可能會發生的越界記憶體存取權問題。
- 部分較老舊的 GPU 不支援 OpenGL 2.1 或更新版本 (這是必備使用條件),或有其他穩定度問題。這些問題可能會導致模擬器在啟動時停止運作,或無法在預設 GPU 設定下使用。現在模擬器偵測到正在使用這些 GPU 後,會自動切換為使用 Swiftshader 轉譯器。
- 修正當
FBO != 0
設定和eglSwapBuffers
同時進行時,會造成模擬器無法張貼正確 framebuffer 的問題。 - 修正 Android 虛擬螢幕只會顯示在左上角的問題。我們認為原因是 Qt 環境變數設定錯誤。模擬器現在會覆寫所有 Qt 縮放相關的環境變數。
- 修正模擬器有時會在從快照載入 GLES1 應用程式時停止運作的問題。
- 修正在 OpenGL 啟動轉譯執行緒可能會導致重複釋放或資料筍會的並行問題。
- Android Emulator 現在支援使用 API 級別 28 或更高級別的系統映像檔所支援的 ASTC LDR 壓縮材質 (
GL_KHR_texture_compression_astc_ldr
) 了。 - 多數現行 GPU 應該都可以在不使用
GLESDynamicVersion
功能旗標的狀況下,啟動預設啟用 OpenGL ES 3.x 的模擬器了。 - 淘汰
-gpu guest
(訪客端的軟體轉譯)。API 級別 28 或更高級別的系統映像檔現在會自動改為使用 Swiftshader 了 (-gpu swiftshader_indirect
)。 - 現在當從指令列使用
-no-window
旗標啟動模擬器時,預設的轉譯器為 Swiftshader。
位置
- 模擬器現在可以根據緯度和經度定位更新軸承了。磁力儀虛擬感應器會在播放 GPX 或 KML 檔案時推算動作,藉此根據磁北進行動態調整。
- 使用者現在可到「位置」頁面設定裝置速度。
- 播放 GPX 或 KML 檔案時,系統會自動設定速度,播放結束時速度會設為零。
- 高度不再有 -1,000 到 +10,000 公尺之間的限制。
- 修正問題:除非至少開啟「Extended Controls」視窗一次,否則無法定期更新虛擬全球衛星定位系統定位資訊。
相機
模擬器會為從網路攝影機傳送的相機畫面動態調整大小,因此現在可支援更多 Windows 系統的網路攝影機。這項功能也能防止發生會導致模擬器停止運作的畫面傳送錯誤。
Play 商店
為解決 Play 商店映像檔用盡磁碟空間的問題,模擬器現在會在執行新的 Play 商店 AVD 時自動將 userdata 分區調整為 6 GB。
一般改善品質及修正項目
- 部分使用者回報模擬器執行速度非常緩慢。我們發現其中一個可能的原因是模擬器的暫存目錄內有太多過時檔案。為解決此問題,模擬器現在不會在該目錄儲存 ADB 有效性檢查檔案了。不過,刪除該資料夾內容應該也有助於減輕此問題。根據作業系統不同,這個資料夾位於以下其中一個位置:
- Windows:
C:\Users\<username>\AppData\Local\Temp\AndroidEmulator\*
- macOS 或 Linux:
/tmp/android-<username>/*
- Windows:
- 現在當模擬器因可用的 RAM 不足而無法啟動時,系統會顯示錯誤訊息。如果您使用 Windows 系統,並發現有可用的 RAM 卻還是無法啟動模擬器,就表示您可能超出修訂版本費用限制。如需解決此問題的相關說明,請參閱「模擬器疑難排解頁面」。
-sysdir
指令列選項現在可以正確覆寫推測的系統映像檔目錄了。- 虛擬數據機現在支援模型活動資訊
+MAI
查詢了。 - 修正記憶體流失、記憶體損毀和 CPU 用量的各種相關問題。遇到停止運作、記憶體流失或其他高資源使用率問題後,請至 Issue Tracker 建立問題。
- 修正 macOS 10.14 上再度發生模擬器使用藍牙耳機時全域音訊都會降級的問題。為避免發生此情形,模擬器現在在 macOS 執行實惠避免使用藍牙音訊。(問題 37070892)
- 修正 Windows 模擬器時鐘不在正確時區的問題。
- 修正在轉動型磁碟 (傳統硬碟) 的 Linux 系統執行模擬器,會出現效能緩慢及停止運作的問題。
- 修正一些可能會在 macOS 導致堆疊損毀的編譯警示。
- 修正可能產生具誤導資訊的停止運作報告的問題。
- 修正當任一執行緒並未成功建立時,刪除執行緒池可能會導致停止運作的問題。
- 修正 macOS 計時器運作不穩定,導致停止運作及其他怪異行為的問題。如果 macOS 使用者發現模擬器停止運作,請至 Issue Tracker 建立問題。
- 修正關閉模擬器會停用使用者介面,但並未真正關閉模擬器的問題。
- 修正偶爾當機的問題,例如因為開啟太多
/dev/urandom
例項而導致取消。 - 修正強制終止 ADB 後,會導致模擬器在第一次啟動後無法再啟動的問題。
- 已移除 MIPS 版本。如果您仍然需要使用 MIPS,請至 Issue Tracker 建立問題。
- 修正 ADB 連線載入快照時可能會損毀的問題。
- 修正重新啟用裝置螢幕方向與 AVD 預設螢幕方向不同的快照時,模擬器視窗會出現殘影或瞬間移動到螢幕外的問題。
- 修正儲存快照時會發生的當機問題。
- Linux 的 btrfs 檔案系統可能會造成速度大幅降低,這是因為模擬器會自動儲存快照,並為虛擬磁碟裝置進行寫入時複製作業。建議您清除
~/.android/avd
目錄,並對空的~/.android/avd
目錄執行以下指令: 敬上 這麼做會在已停用寫入時複製的資料夾中建立新的快照。chattr +C
HAXM 7.3.2
我們再次提及 HAXM 7.3.2 是因為必須安裝此項目,才能在模擬器上正確執行近期的系統映像檔。我們已在穩定版中提供 HAXM 7.3.2,您也可從 https://github.com/intel/haxm/releases 手動安裝。
以下是此版本的 HAXM 解決的問題:
- 修正使用最近 Linux 核心 (>= 4.6) 訪客作業系統會隨機停止運作的問題。例如:Ubuntu 18.04 (#39, #74)。
- 修正可能導致主機停止運作的 x86 操作說明模擬器錯誤 (#93)。
32 位元 Windows 淘汰項目
由於使用率低且維護成本高,因此我們打算淘汰在 Windows 上執行的 32 位元版本 Android Emulator。我們會在 32 位元版本 Android Emulator 產品停產和移除之間推出轉換方案。不過,我們會主動聽取有關這項未來變更的意見回饋或疑慮。
如果您目前必須使用在 Windows 上執行的 32 位元版本 Android Emulator,請透過 Issue Tracker 告知我們,並讓我們瞭解日後該如何與您合作,以符合您的需求。
27.3.10 (2018 年 8 月)
這項更新修正了下列錯誤:
修正 RAM 大小設定
部分使用者回報模擬器執行速度非常緩慢。我們發現其中一個可能的原因是 AVD config.ini
檔案內的 AVD RAM 大小設定錯誤。
為減緩此問題,若使用 API 級別 26 或更高級別的映像檔,模擬器會將最低 RAM 等級增加為 Android Studio 預設等級 (1536 MB)。如果 AVD config.ini
檔案並未以 MB 列出 hw.ramSize
,請至 Issue Tracker 建立問題。您可到以下位置找到 config.ini
檔案:
~/.android/avd/<avdname>.avd/config.ini
27.3.9 (2018 年 7 月)
本次更新內含以下改善項目及修正錯誤:
改善 Windows Hypervisor 平台的錯誤訊息
部分使用者無法順利診斷在啟動 WHPX 模擬器時,Windows Hypervisor 平台 (WHPX) 為何無法初始化。為協助診斷問題,我們新增了資訊更完整的錯誤訊息。只要透過使用 -verbose
標記的指令列執行模擬器,即可啟用這些錯誤訊息。
一般修正項目
- 修正相機應用程式載入快照時會發生的 OpenGL 錯誤。
27.3.8 (2018 年 7 月)
本次更新內含多種新功能,並改善了現有功能及修正錯誤。
快照
您現在可以為特定裝置設定儲存多個 AVD 快照,並且選擇在啟動模擬器時載入哪一個已儲存的快照。
從 Android Studio 3.2 Canary 13 起,所有裝置設定的「虛擬裝置設定」對話方塊進階設定內都會新增控制項,您可以藉此設定指定啟動 AVD 時要載入的 AVD 快照。
為配合本次擴充的快照功能,我們已在「Extended controls」對話方塊中新增「Snapshots」類別。這個新窗格提供用於儲存及載入 AVD 快照的控制項,包括先前位於「Settings」窗格內,用於儲存及載入 Quick Boot 快照的控制項。
您可以編輯每個已儲存快照的名稱和說明。
詳情請參閱「快照」。
HAXM 7.2.0
現在所有頻道皆可取得 HAXM 7.2.0。
本次更新修正多個錯誤,並改善了對大量 RAM 的支援。此外,在本次 HAXM 更新和模擬器 27.3 以上版本中,快照會以隨選方式將內容載入 RAM,而不是在虛擬裝置啟動時載入整個快照。此變更應該可以大幅減少載入快照所需的時間。
詳情請參閱「設定 VM 加速功能」。
27.2.9 (2018 年 5 月)
本次更新內含多種新功能,並改善了現有功能及修正錯誤。
錄製螢幕畫面
您現在可以透過 Android Emulator 錄製視訊和音訊,並將錄製內容儲存至 WebM 或 GIF 動畫檔案。
螢幕錄影控制項位於「Extended Controls」視窗的「Screen record」分頁中。
提示:您也可以按下 Control + Shift + R 鍵 (在 Mac 上是 Command + Shift + R 鍵) 以開啟螢幕錄影控制項。
如要開始錄製螢幕畫面,請在「Screen record」分頁中按一下「Start recording」按鈕。如要停止錄影,請按一下「Stop recording」。
播放及儲存錄製影片的控制選項位於「Screen record」分頁底部。如要儲存影片,請從該分頁底部的選單中選擇「WebM」或「GIF」,然後按一下「Save」。
您也可以在指令列中使用下方的指令錄製並儲存模擬器的螢幕錄影畫面:
adb emu screenrecord start --time-limit 10 [path to save video]/sample_video.webm
螢幕截圖
您可以在指令列中使用下列任一指令來擷取螢幕截圖:
screenrecord screenshot [destination-directory]
adb emu screenrecord screenshot [destination-directory]
螢幕截圖會以 PNG 格式儲存。
虛擬場景相機和 ARCore
我們推出新的虛擬場景相機,可讓您在虛擬環境中實驗擴增實境 (AR) 體驗,在開發及測試採用 ARCore 的 AR 應用程式時更加得心應手。
想進一步瞭解如何在模擬器中使用虛擬場景相機,請參閱「在 Android Emulator 中執行 AR 應用程式」。
Pixel 裝置映像檔的 Google Play 商店
Pixel 和 Pixel 2 裝置映像檔現在已經啟用 Google Play 商店了。Android Studio 3.2 以上版本可在 AVD Manager 的「Play 商店」欄中看到 Google Play 標誌,表示有此功能。已啟用 Google Play 商店 的 AVD 會在「Extended Controls」對話方塊中顯示「Google Play」分頁標籤,其中提供了用於更新裝置 Google Play 服務的便利按鈕。
快照
現在不用重新啟動模擬器即可載入 Quick Boot 快照。如要載入快照,請開啟「Settings」頁面的「Extended controls」視窗,然後按一下「Load Now」按鈕。
我們改善了快造的載入及儲存作業,大幅提昇了資源使用效率,並將各作業的處理時間降到最低。如果您還是碰到儲存時間異常地長的問題,請提出問題,並詳細提供 CPU、RAM,以及執行中的所有防毒軟體/防火牆/安全性軟體的設定資訊。
透過 Skia 轉譯
使用 API 27 或更新的映像檔時,模擬器可以透過 Skia 轉譯 Android 使用者介面,讓轉譯過程更順暢、效率更好。
您目前必須明確啟用 Skia 才能使用這項功能。
若要啟用 Skia 轉譯功能,請在 ADB 殼層內使用以下指令:
su setprop debug.hwui.renderer skiagl stop start
相機
在 Windows 系統執行的 Android Emulator 現在會採用 Media Foundation 做為網路攝影機後端,藉此大幅提升網路攝影機錄影效能和畫面更新率,最高可達 720p,每秒 30 個影格。
Mac 使用者現在可以同時使用 webcam0 和 webcam1 了。
其他
-phone-number-prefix
指令列選項變更為 -phone-number [number]
,可供使用者設定完整的電話號碼。
您現在可以使用英數字元簡訊地址。
修正項目
- Android Emulator 的 Linux 版本現在以現行 Clang C++ 工具鏈建構。這項變更可以修正模擬器由於 libGL 和 libstdc++ 錯誤而無法啟動的問題。
- 修正數個當機及停止運作的原因。
- 為了避免未使用磁碟空間不足造成當機和停止運作,模擬器現在會在啟動時檢查未使用磁碟空間是否充足,如果未使用空間未達至少 2 GB 則不會啟動。
- 修正部分 Unity 遊戲無法轉譯的問題。
- 修正導致模擬器無法連線到網路的 DNS 問題。
- 修正變更透過虛擬裝置設定對話方塊指派給 AVD 的內部空間時,變更無法生效的問題。
- 修正多個 ADB 程序建立後無法正確關閉的問題。
- 修正旋轉按鈕和其他使用者介面元件無法回應,直到開啟擴充控制項視窗為止的問題。
- 修正除非至少開啟過擴充控制項對話方塊一次,否則無法從主機複製及貼上的問題。
- 更新無框模擬器的調整大小矩形,使其更符合模擬器的視覺主題。
- 現在開啟飛航模式後,系統會正確停用電話和簡訊了。
- 修正載入快照後,系統會停用簡訊和手機功能的問題。
- 您不會再收到註明
“Unable to open... \pstore.bin. Permission denied.”
的錯誤警告訊息。 - 修正在部分 Mac 螢幕上無法重新調整 AVD 位置的問題。
- 修正較新的 MacBook Pro 電腦執行 Pixel 2 XL 外觀的 AVD 時會出現畫面閃爍和空白畫面的問題。
- 修正在啟用無框模擬器時,切換到放大模式時會出現空白畫面的問題。
- 修正裝置外觀和模擬器內容放大後無法同步捲動的問題。
如果您依然會發生停止運作或其他不穩定問題,請提出問題。
27.1.12 (2018 年 3 月)
這項更新修正了下列問題:
- 啟動模擬器之後,藍牙音訊品質會降級。(問題 37095756)
- 傳送到特定模擬器的位置資訊會傳送給所有模擬器。(問題 73450633)
- 在圖形使用者介面中透過「Extended Controls」>「Location」所設定的值,會覆寫使用主控台設定的 GPS 位置。(問題 73471760)
如果您依然會發生停止運作或其他不穩定問題,請提出問題。
結合這次更新、最新的系統映像檔和 Android Studio 的預覽版本,您可使用 Android Emulator 執行以 ARCore 建構的擴增實境應用程式。詳細使用條件及操作說明請參閱「在 Android Emulator 中執行 AR 應用程式」。
27.1.10 (2018 年 2 月)
相機擷取解析度
您現在可用附加網路攝影機擷取 720p 的畫面了。
若要配合 Android 8.1 (API 級別 27) 及更高版本的系統映像檔使用,附加網路攝影機必須具備可擷取 720p 畫面的能力。
修正項目
- 修正網路攝影機擷取有時會輸出扭曲或全綠圖像的問題。
- 修正雖然沒有實際停止運作,但是依然可能看到以下訊息的問題:「模擬器:錯誤:偵測到執行緒「Qt event loop」停止運作。已有 15000 ms 沒有反應。」
如果您依然會發生停止運作或其他不穩定問題,請提出問題。
27.1.7 (2018 年 2 月)
無框模擬器視窗:
根據預設,含有裝置外觀檔案的模擬器不會顯示視窗四周邊框。如要顯示視窗邊框,請前往「Extended Controls」視窗的「Settings」窗格,然後啟用「Show window frame around device」。
改善 Quick Boot 功能,提升與 AVD 快照搭配運作的效率:
- 您隨時可以透過「Extended Controls」對話方塊下「Settings」窗格中的「Save Now」按鈕儲存 AVD 快照。
- 在許多情況下,模擬器只會儲存目前狀態與先前已儲存快照之間的差異,藉此縮短儲存快照的時間。
詳情請參閱 Quick Boot 說明文件。
模擬器已更新為使用 QEMU 2.9。
部分重大改善項目包括以下內容:
- 最佳化 I/O,並讓 I/O 執行緒鎖定更精確,藉此提高效能。
- 修正 QEMU 2.8 (26.1.4) 以來的錯誤。
- 新的 HAXM 後端實作。
完整的變更項目清單請參閱「QEMU 2.9 變更記錄」。
符合 OpenGL ES 3.0 規格的 Swiftshader 實作:
模擬器的 Swiftshader 轉譯器現在完全符合 OpenGL ES 3.0。如需 Swiftshader 轉譯器的詳細資料,請參閱「Extended Controls」的「Settings」>「Advanced」部分。
修正項目
- 修正除非關閉再重新開啟「啟用剪貼簿分享」選項,否則剪貼簿分享無法使用的問題。
- 修正用低解析度 AVD 使用 Swiftshader 轉譯後端會停止運作的問題。
27.0.5 (2018 年 1 月)
根據預設,系統現在會停用在 Windows 作業系統提供轉譯功能的 ANGLE。
如果 ANGLE 比較符合您的需求,可用指令列旗標
-gpu angle_indirect
重新啟用。您也可以開啟「Extended Controls」視窗,依序前往「Settings」>「Advanced」,然後選取「ANGLE D3D11」做為 OpenGL ES 轉譯器設定。修正 Shift+B 無法輸入大寫 B 字元的問題。
27.0.2 (2017 年 12 月)
新的 Quick Boot 功能會以 AVD 執行個體的快照為基礎,加快模擬器啟動時間。
所有 AVD 都會預設啟用 Quick Boot。雖然第一次啟動 AVD 時必須進行冷啟動 (和啟動裝置電源相同),但是之後每次啟動都十分快速,而且系統都會還原模擬器關閉時的狀態 (類似喚醒裝置)。
如要控管模擬器儲存快照的時機,請開啟模擬器的「Extended Controls」視窗並點選「Settings」。您可在此選取以下任一個「Save quick boot state on exit」的設定:
- 是:關閉模擬器時一律儲存 Quick Boot 快照。此為預設值。
- 否:一律不儲存 Quick Boot 快照,一律執行冷啟動。
- 詢問:關閉模擬器時,系統會詢問是否要儲存 Quick Boot 快照。
所選設定只會套用至目前開啟的 AVD。
詳情請參閱「Quick Boot 文件」。
新增對 Mac OpenGL ES 3 的支援 (供使用 API 級別 24 及更高級別的系統映像檔、Google API 及 x86 ABI 使用)。
為了提昇 OpenGL ES 2+ 應用程式的穩定性,模擬器現在會使用 OpenGL 核心設定檔 (如果有的話)。
新的 Swiftshader/ANGLE 轉譯選項:
-gpu swiftshader_indirect
:更快、更可靠的 Swiftshader 變化版本,可和 Quick Boot 搭配使用。-gpu angle_indirect
(僅供 Windows 使用):更穩定的 ANGLE D3D 變化版本,也可和 Quick Boot 搭配使用。
舊版
-gpu swiftshader
及-gpu angle
選項已遭淘汰。在「Extended controls」視窗的「Settings」>「Advanced」中,OpenGL ES 轉譯器設定的「SwiftShader」和「ANGLE」選項現在會使用*_indirect
變化版本。修正其他各項錯誤。
26.1.4 (2017 年 8 月)
本次要版本內含修正錯誤及以下的 GPU 設定改善項目:
- 在 ANGLE 轉譯器執行時,啟用啟動動畫
- 在 ANGLE 轉譯器執行時,停用 GLES3
26.1.3 (2017 年 8 月)
本次要版本包含錯誤修正、效能提升和小幅功能異動。
- 此版本現在必須使用最新版的 Android 8.0 系統映像檔。這些項目符合 Treble 規範,並有個別的
vendor.img
分區。 - 現在已可使用新的 HAXM 6.2.0 (請看 SDK Manager),其中包括以下更新項目:
- 改善記憶體用量。HAXM 鎖定的最大記憶體工作組不再等於 AVD 的 RAM 大小,而是將記憶體按需求進行分頁。這項變更應該可以協助 RAM 數量較低的機器以更可靠的方式執行模擬器。
- 使用 HAXM 6.2.0 的模擬器現在在 macOS 可以略過冗長的初始化階段,加快啟動速度。
- 改善 GPU 設定
- 修正以下問題:執行訪客端軟體轉譯時,如果改為使用 Swiftshader 執行主機端軟體轉譯,系統啟動時就會顯示黑色畫面。API 級別 19 - 25 搭配 Google API 用的最新版本系統映像檔應該可以順利進行訪客端轉譯了。
- 修正問題:模擬器因偵測到舊 Intel GPU 而改用軟體轉譯器,但其實模擬器是在獨立 GPU 上執行。會改為使用 ANGLE 或 Swiftshader 轉譯的 GPU 由以下條件決定:
- 舊型 Intel iGPU 在 OpenGL 及 ANGLE D3D 驅動程式皆有驅動程式問題。Intel HD Graphics 3xxx 及較舊型號的使用者將使用 Swiftshader。
- 部分使用者回報由於「Pixel 啟動器持續停止運作」的錯誤,導致無法使用 API 級別 25 的映像檔。這似乎是部分 Intel HD 4xxx 型號的驅動程式問題。因此,這些型號將自動改為使用 ANGLE。
- 為達成最佳 GPU 模擬結果,建議您使用獨立的 NVIDIA 或 AMD GPU,或使用較新的 Intel GPU (Iris、HD 5xxx、HD 5xx/6xx)。
- 修正問題:使用
hw.gpu.mode=host
設定 AVD 且於遠端桌面用戶端啟動模擬器時,模擬器會無法啟動 (OpenGL 模擬無法進行初始化)。 - 詳細說明「OpenGL ES API 級別 (須重新啟動)」設定;新增若發生問題,或需要測試較低 OpenGL ES API 級別時,可從 OpenGL ES 3 降級為 OpenGL ES 2 的選項。
- Mesa 轉譯器已遭淘汰;
hw.gpu.mode=mesa
現在會自動改為在主機上使用 Swiftshader。
- macOS 改善項目:
- 模擬器現在透過 Hypervisor.Framework 或 HAXM 6.2.0 已可完全相容於 macOS 10.13 High Sierra。
- 在 macOS 上的 32 位元 x86 映像檔現在會預設啟用 Hypervisor.framework,以便改善效能及 macOS 相容性。如果您遇到相關問題,請提交錯誤報告,並在
~/.android/advancedFeatures.ini
(假如這個檔案不存在,請自行建立) 內附加HVF = off
。 - 修正使用 Hypervisor.framework 時無網際網路/附加偵錯工具失敗的問題。
- 為提升網路攝影機錄影功能的相容性和效能,以 QTKit 為基礎的相機攝影已替換為以 AVFoundation 為基礎的緩衝式攝影。
- 部分系統映像檔 (目前僅限 API 級別 25) 新增 Wi-Fi 支援功能。提供名為「AndroidWifi」的存取點,且 Android 會自動連線到此存取點。使用指令列參數
-feature -Wifi
執行模擬器,即可停用 Wi-Fi 支援。 - 部分使用者提出疑慮,認為固定大小的 Play 商店系統映像檔儲存空間不足。因此,我們已將預設大小提高到 2 GB (原為 800 MB)。
- 新增鍵盤快速鍵 (Ctrl+Shift+U),使用者可藉此直接從設定頁面開啟錯誤報告使用者介面頁面。
- 修正問題:當舊型 CPU 使用 Intel x86 EPT 但無 UG 時,如果設定多個核心,模擬器會無法啟動。
- 修復若模擬器透過 Xen 管理程序執行,系統會錯誤偵測 HyperV 的問題。
- 修正部分 Linux 設定下,模擬器會在啟動時停止運作的問題。
26.1.2 (2017 年 7 月)
此版本內含新功能及效能改善項目。
已在「Extended Controls」中新增可定義自訂 HTTP Proxy 設定的功能 (請依序點選「More」圖示
、「Settings」和「Proxy」)。根據預設,模擬器會使用 Android Studio HTTP Proxy 設定,但您可以透過這個畫面手動定義 Proxy 設定。
訪客模式 GPU 新增 VNC 支援,以便透過遠端檢視及控制模擬器。舉例來說,您可以啟動模擬器,並用以下方式讓 VNC 監聽通訊埠 5901:
- 執行:
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
開啟 VNC 檢視工具 (例如 tightvnc viewer) 並連線到通訊埠 5901。
如要使用 Mac 內建分享螢幕畫面用戶端,則必須在啟動模擬器時提供 VNC 密碼。若想設定密碼,請用此指令:
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1,password -monitor stdio
然後在主控台中輸入
change vnc password
並輸入密碼。
VNC 模式目前尚未支援 Android O。
- 執行:
「Extended Controls」的「Help」畫面中已新增「File a bug」按鈕 (依序點選「More」圖示
、「Help」和「Emulator help」)。點選「File a bug」即可開啟對話方塊,當中會顯示螢幕截圖、AVD 設定資訊和錯誤報告記錄等錯誤報告詳細資料。接著,您可以儲存報告供自己使用,或回報模擬器問題。
為模擬器和虛擬感應器面板新增陀螺儀感應器。要使用此功能,必須使用支援陀螺儀的系統映像檔 (目前 API 級別 24 及 25)。
若主機上有多個虛擬網路介面加入多個不適用於模擬器的 DNS 位址,在 Windows 上將主機偏好使用的 DNS 新增至 Qemu DNS 清單。
透過伺服器旗標為 macOS 10.10+ 的 32 位元 x86 映像檔新增 macOS Hypervisor.Framework 實驗支援功能,此變更應該可以改善啟動時間及效能。
- 如果您遇到相關問題,請在
~/.android/advancedFeatures.ini
中新增HVF = off
這一行。
- 如果您遇到相關問題,請在
現在支援 OpenGL ES 3 的系統映像檔及主機 GPU 都會預設啟用 OpenGL ES 3.x。目前僅有 Android O (API 級別 26) 及 Windows/Linux 主機支援 OpenGL ES 3。
- 如果您遇到 OpenGL ES 3 相關問題,請在
~/.android/advancedFeatures.ini
中新增GLESDynamicVersion = off
這一行。
- 如果您遇到 OpenGL ES 3 相關問題,請在
模擬器現在會使用畫面未顯示的 OpenGL FBO 執行所有轉譯作業 (最終螢幕圖像發布作業除外),這應該有助於解決跨平台的色彩一致性問題。
在根據模擬器突然降低執行速度的問題收集相關資料後,我們判斷原因可能和舊版 Intel OpenGL 驅動程式與 Windows 更新項目的互動有關。因此,Intel HD 4000、3000、2000 (和相關 GPU) 使用者現在預設擁有轉譯設定,可使用 D3D 轉譯器 (ANGLE) 或 Swiftshader (軟體轉譯器)。
26.0.0 (2017 年 3 月)
此版本和 API 級別 26 相容。此版本也內含多種效能改善項目及修正錯誤。
次要修訂版本 26.0.3 (2017 年 5 月)
- 新增可線上更新的功能旗標,以便快速解決因硬體設定不當而造成的問題。這可讓 Google 藉由更新伺服器端的旗標,推出需仰賴使用者設定的修正項目和功能。如果您發現特定硬體發生問題,請回報錯誤,我們會調查問題原因。
- Android Wear API 級別 25 的系統映像檔新增旋轉輸入支援。如要模擬 Wear 裝置的旋轉輸入撥號,請點選擴充視窗的「Rotary Input」分頁標籤。
- 現在可以調整「Crash Reporting」對話方塊大小,而且如果未輸入內容,系統不會再將「When to send crash reports」重設為「Ask」。
- 32 位元模擬器現在會要求 AVD RAM 大小上限不得超過 512 MB,藉此防止模擬器用罄虛擬位址空間的 2 GB 空間。
- 模擬器映像檔新增絕對路徑支援。
- 在 Google Play 商店映像檔的擴充視窗中新增分頁,當中會顯示 Play 服務的版本,以及用於檢查是否有 Play 服務更新項目的按鈕。
- 新增下拉式選單,以便在「Emulator Settings」頁面中選取 OpenGL 轉譯器。如果 Windows 機器發生 OpenGL 驅動程式相關問題,請嘗試使用 ANGLE (D3D11) 或 ANGLE (D3D9) 選項 (須重新啟動)。如果非 Windows 機器發生 OpenGL 驅動程式相關問題,請嘗試使用 Swiftshader 軟體轉譯器 (須重新啟動)。
- 修正模擬器同時收到
exit
和minimize
指令後,會在結束時發生的罕見當機問題。 - 修正在 Mac 機器上變更畫面時發生的縮放問題。(問題 268296)
- 修正模擬器佔用 CPU 300% 使用率,並在休眠中的主機電腦恢復操作,或長時間執行模擬器之後依然保持此使用率的問題。
- 修正模擬器關機問題。
HAXM v6.1.1 更新項目 (2017 年 3 月)
注意:自 3 月 30 日起,Mac 使用者即可透過 SDK Manager 取得 HAXM 6.1.1 版,Windows 版也會在近期推出。
Android Emulator 26.0.0 版本支援 HAXM v6.1.1,其中內含以下更新項目:
- 啟用效能監控單元 (PMU) 模擬。(問題 223377)
- 修正 Mac 的 VirtualBox 及 Docker 並存問題。(問題 197915)
- 修正 Windows 安裝程式無法偵測 Intel VT-x 時會顯示的安裝錯誤訊息,原因通常是啟用了 Hyper-V。
- 在以 Hyper-V 為基礎的 Windows VM 上執行的 Android Emulator 現在支援加速功能了。主機 Hyper-V 執行個體 (管理 Windows VM/訪客的執行個體) 必須使用最新版本的 Hyper-V,而且必須啟用巢狀虛擬化功能,才能進行這項更新。訪客 Hyper-V 執行個體 (Windows VM) 必須停用 Hyper-V。
依附元件
- Android SDK 平台工具修訂版本 25.0.4 或更新版本。
- Android SDK 工具修訂版本 26.0.0 或更新版本。
新功能及修正錯誤
- 相容於 API 級別 26。
- 完全符合 GLES 2.0。現在如果主機 GPU 符合電腦 OpenGL 驅動程式,模擬器即會傳遞 100% Android CTS dEQP-GLES2
mustpass
清單。API 級別 24 x86 映像檔 (修訂版本 11 及更高版本) 已釋出此內容,所有系統映像檔很快就會內附此內容。 - 改善影片播放效能。模擬器現在會在主機/訪客共享記憶體儲存所有影片色彩緩衝,並在 GPU 內執行必要的最終 YUV RGB 轉換作業。現在多數系統應該都可使用 1080p30 了。API 級別 24 x86 映像檔 (修訂版本 11 及更高版本) 已釋出此內容,所有系統映像檔很快就會內附此內容。
- 模擬器現在可以在結束時正確取消註冊
adb devices
清單,並可在 Linux 機器上關閉開啟的 TCP 通訊埠。 - ADB 連線現在更穩定了。系統可更快偵測到執行中的模擬器,而且這類模擬器不會再進入「離線」或「未授權」狀態。
25.3.0 (2017 年 3 月)
這個版本會分別發布 Android Emulator 和 SDK 工具。此版本內含多種效能改善項目、新功能,以及修正錯誤。
次要修訂版本 25.3.1 (2017 年 3 月)
- 藉由預設停用 GLAsyncSwap 修正部分 GPU 設定會停止運作的問題。這項功能於 25.3.0 加入,以便改善遊戲和影片的影格時間和每秒影格數,但會導致模擬器在部分未知機器設定下無法運作。只要開啟
android_sdk/emulator/lib/advancedFeatures.ini
檔案並設定GLAsyncSwap = on
,即可手動啟用。
依附元件
- Android SDK 平台工具修訂版本 24 或更新版本。
- Android SDK 工具修訂版本 25.3.0。
新功能及修正錯誤
- 更新模擬引擎為 QEMU 2.7,包括所有近期修正錯誤、改善效能及新功能。
- 新的 IPv6 支援功能。
- 模擬器現在會在主機使用 SwiftShader 做為純軟體轉譯器。
- 改善 Android 管道效能:Android Pipe 是模擬器和 Android 作業系統之間的主要通訊管道,現在不但提昇數量級的速度,並減少了延遲時間,也能提供更優異的多執行緒效能。此更新改善了模擬器多項效能,包括:
- 改善 ADB 推送/提取速度。
- 更優異的 3D 加速支援。
- 提昇模擬器整體回應能力。
- 改善圖像效能。
- 當訪客提出要求時,模擬器現在會使用 GPU 端的緩衝區 (glBindBuffers/glBufferData),以便降低部分應用程式的 CPU 負擔。
- 改善音訊支援。
- 提昇磁碟 I/O 速度:模擬器現在會使用個別的執行緒調度磁碟 I/O,藉此降低延遲並改善處理量 (可達 1.5 倍依序 I/O 速度及 5 倍存取 I/O 速度)。這樣也能降低磁碟清除次數,大幅減少實體裝置的負擔。
- 模擬器現在在 Windows 機器進行磁碟啟動會使用疏鬆檔案,藉此加快啟動及「抹除資料」啟動的速度。當模擬器建立或重設 AVD 時,現在會在磁碟寫入 100-200 MB 的資料,而非 2 GB 以上的資料。
- 多項 GUI 強化內容:
- 模擬器現在使用 Qt 5.7.0,內含多項修正錯誤及效能改善項目。
- UI 初始化作業不再嘗試載入所有模擬器執行檔做為 Qt 外掛程式,可大幅縮短作業時間,特別是在 HDD 上執行時更有效率。
- 使用者介面互動速度更快、更順暢,包括旋轉、重新調整視窗大小,以及擴充控制項視窗載入及關閉速度。