作為 Android 11 開發者預覽版的一部分,Google 已經發佈了 "Android 11 系統鏡像" ,它們能夠執行 ARM 二進位文件,性能得到了顯著提升。 以前,依賴於 ARM 庫而無法構建 x86 變體應用程式的開發人員要麼必須使用具有完全 ARM 模擬的系統映像,這比在基於 x86 ...
作為 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開發技術周刊