隨着 Android 11 開發者預覽版的發佈,咱們同時也推出了 Android 11 系統映像。新的系統映像在執行 ARM 二進制文件方面取得了顯著的性能提高。此前,依賴 ARM 庫且沒法構建 x86 版本應用的開發者只能使用完整的 ARM 模擬系統映像 (其速度遠低於在 x86 設備上運行 x86 系統映像) 或者實體機。Android 11 系統映像可以在不影響整個系統的前提下,直接將 ARM 指令轉換成 x86 指令。開發者無需搭建高負載的 ARM 環境便可執行 ARM 二進制文件並進行測試。android
咱們可能須要結合具體情景來講明這項新技術的重要性,尤爲是若是您只使用 Kotlin 或 Java 編程語言來構建應用的話。Kotlin 和 Java 編程語言均在 ART (Android 運行時) 上執行,但 C++ 則與它們不一樣,Android 應用中的全部 C++ 指令會直接編譯爲機器指令,也就是說,目標設備的平臺架構決定着 C++ 的編譯方法。移動手機通常搭載 ARM 處理器,所以,您爲應用添加的許多 C++ 依賴項 (例如攝像頭條形碼掃描庫) 僅與 ARM 處理器兼容。在這種情形下,若是您使用基於 x86 處理器的設備進行開發工做,便會遇到應用沒法運行的問題。編程
過去,開發者須要經過模擬器鏡系統映像搭建一個完整的 ARM 環境,才能繞過這個限制並在 x86 機器上執行 ARM 應用。可是,把整個系統的 ARM 指令都轉換成 x86 指令會形成太高的性能負荷,所以與基於 x86 的系統映像相比,完整的 ARM 系統映像在 x86 宿主機上的運行速度會慢不少,並且它還沒法使用 x86 處理器提供的硬件加速和 CPU 虛擬化技術。api
全新的 Android 11 系統映像與 ARM 兼容,它不只容許整個系統在本機運行 x86 指令,並且還能夠照常使用虛擬化技術。當應用的某個進程須要使用 ARM 二進制代碼時,代碼僅會在該進程內被轉換成 x86 指令,其他進程將繼續在 x86 環境內執行,包括 Android 運行時 (ART) 以及其它性能關鍵庫,例如 libGLES 和 libvulkan。除此之外,指令轉換器也不會執行低層的硬件特定庫,從而避免高成本的內存訪問檢測和相應的性能影響。在 ARM 公司的協做下,新的模擬器系統映像在本地和持續集成框架內都可運行。服務器
若是您以前因爲缺少高性能的 ARM 支持,去選擇了實體機而非模擬器,不妨嘗試一下 Android 11 系統映像。此映像文件目前已隨 Android 11 開發者預覽版一同開放下載。您可經過 SDK Manager 或者 Android Virtual Device Manager 將最新版本的系統映像下載至 Android Studio。架構
一旦應用在模擬器中成功運行後,請考慮適配 Chrome OS。Chrome OS 一樣也支持在 x86 筆記本上執行 ARM 版本的 Android 應用。經過構建適用於 Chrome OS 的應用,您能夠挖掘大屏幕設備生態圈所蘊含的海量機遇,讓全球更多的用戶認識您的應用。框架
這項技術能夠幫助更多開發者在 Android 模擬器上進行測試。咱們建議開發者同時構建 x86 和 ARM ABI 兩個版本的應用,使其在物理設備上擁有最佳的運行性能並吸引儘量多的用戶。接下來,咱們計劃在多個 API 級別普及這項技術,同時確保它能和實體機同樣支持全部測試用例。歡迎你們向咱們提交反饋,幫助咱們進一步優化這項新技術。編程語言
請注意: ARM - x86 指令轉換技術可用於執行 ARM 公司旗下的產品。該技術只可經過 Google API 和 Play Store 系統映像獲取,且僅用於在 x86 臺式機、筆記本、客戶端本地服務器或自購的雲環境上進行應用開發和調試。該技術不可在商用託管服務下使用。ide
Java 是 Oracle 和/或其附屬公司的註冊商標。性能
點擊這裏進一步瞭解 Android 11 系統映像測試