作為 Android 11 開發者預覽版的一部分,Google 已經發布了 Android 11 系統鏡像,它們能夠執行 ARM 二進制檔案,性能得到了顯著提升, 以前,依賴于 ARM 庫而無法構建 x86 變體應用程式的開發人員要么必須使用具有完全 ARM 仿真的系統映像,這比在基于 x86 的計算機上運行的 x86 系統映像要慢得多,要么求助于物理設備,新的 Android 11 系統鏡像能夠在不影響整個系統的情況下將 ARM 指令翻譯成 x86 指令,這允許執行 ARM 二進制檔案進行測驗,而不需要完全的 ARM 仿真的性能開銷,

詳情
這樣做的意義可能需要一些背景關系,特別是如果你只使用 Kotlin 或 Java 編程語言構建應用程式的話,不像 Kotlin 或 Java 編程語言,它們都在 Android Runtime (ART)上執行,Android 應用程式中的任何 C++ 都會直接編譯成機器指令,這意味著需要根據目標設備的體系結構以不同的方式進行編譯,移動電話往往有 ARM 處理器; 因此,許多 C++ 的依賴庫,你可能會添加到你的應用程式,如相機條形碼掃描器庫,只兼容 ARM 處理器,如果你使用基于 x86 處理器的計算機進行開發,這將是一個問題,因為它會阻止你運行應用程式,
以前,如果你想繞過這個限制,在 x86 機器上執行一個為 ARM 構建的應用程式,你必須使用一個完全仿真 ARM 的模擬器系統映像,由于將整個系統價值的 ARM 指令轉換為 x86 的開銷,在 x86 主機上運行時,具有完全 ARM 仿真的仿真系統映像往往比基于 x86 的系統映像運行得慢得多,此外,具有完整 ARM 仿真的仿真系統映像無法利用 x86 處理器提供的硬體加速和 CPU 虛擬化技術,
新的與 ARM 兼容的 Android 11 系統鏡像可以像往常一樣利用虛擬化技術本地運行 x86 系統鏡像,當一個應用程式的行程需要一個 ARM 二進制檔案時,這個二進制檔案會在該行程中獨占地被翻譯成 x86,這允許行程的其余部分繼續在 x86 中執行,包括 Android Runtime (ART)和其他性能關鍵庫,如 libGLES 和 libvulkan,此外,轉換器避免了昂貴的記憶體訪問插裝和相關性能的影響,因為它避免了執行低級別的特定于硬體的庫,這些新的模擬器系統映像既可以在本地使用,也可以在您自己的持續集成基礎設施上使用,由于與 ARM 有限公司的合作,這是可能的,
展望未來
如果你之前因為缺乏對 ARM 的支持而選擇了物理設備,那么試試 Android 11 系統鏡像,它們現在可以和 Android 11 開發者預覽版一起使用, 這些系統映像可以通過 SDK 管理器或 Android 虛擬設備管理器在 Android Studio 中下載,

一旦你讓你的應用在模擬器上運行,可以考慮把它改造成適用于 Chrome OS的應用, 還支持在 x86 筆記本電腦上運行為 ARM 開發的 Android 應用程式, 構建 Chrome 作業系統提供了一個大螢屏設備的實質性生態系統,使你的應用程式能夠觸及全球更多的用戶,
這項技術將使更多的開發人員能夠使用 Android 模擬器進行測驗, 盡管如此,Google 仍然建議開發者同時發布 x86 和 ARM ABI 的應用程式變種,以達到最佳的物理設備性能,并盡可能多地接觸到用戶,展望未來,Google 計劃將該技術推廣到更廣泛的各種 API 級別,并確保它支持測驗物理設備將要使用的所有用例,鑒于這是一項新技術,請通過 Google 官方的問題跟蹤器反饋任何問題,
注意,ARM to x86 翻譯技術使 ARM 有限公司擁有的知識產權得以實施, 它只能在 Google api 和 Play Store 系統映像上使用,并且只能用于 x86 臺式機、筆記本電腦、客戶本地服務器和客戶購買的基于云的環境中的應用程式開發和除錯,該技術不應用于提供商業托管服務,
作者:Michael Hazard 原文地址:https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html
199元學習大禮包:點擊領取
原文地址:https://androidweekly.io/news-android-emulator-run-arm-app/
著作權宣告:禁止一切形式的轉載-禁止商用-禁止衍生
公眾號:Android開發技術周刊
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/18497.html
標籤:Android

