隨著 Android 11 開發(fā)者預(yù)覽版的發(fā)布 ,我們同時也推出了 Android 11 系統(tǒng)映像。新的系統(tǒng)映像在執(zhí)行 ARM 二進(jìn)制文件方面取得了顯著的性能提升。此前,依賴 ARM 庫且無法構(gòu)建 x86 版本應(yīng)用的開發(fā)者只能使用完整的 ARM 模擬系統(tǒng)映像 (其速度遠(yuǎn)低于在 x86 設(shè)備上運行 x86 系統(tǒng)映像) 或者實體機。Android 11 系統(tǒng)映像能夠在不影響整個系統(tǒng)的前提下,直接將 ARM 指令轉(zhuǎn)換成 x86 指令。開發(fā)者無需搭建高負(fù)載的 ARM 環(huán)境即可執(zhí)行 ARM 二進(jìn)制文件并進(jìn)行測試。
全新的 Android 11 (Google API) x86 系統(tǒng)映像支持 ARM 應(yīng)用二進(jìn)制接口 (ABI),較舊版本的 Android Oreo 系統(tǒng)映像并不提供該支持
Android 11 系統(tǒng)映像 https://developer.android.google.cn/studio/releases/emulator#support_for_arm_binaries_on_android_9_and_11_system_images
技術(shù)細(xì)節(jié)
我們可能需要結(jié)合具體情景來說明這項新技術(shù)的重要性,尤其是如果您只使用 Kotlin 或 Java 編程語言來構(gòu)建應(yīng)用的話。Kotlin 和 Java 編程語言均在 ART (Android 運行時) 上執(zhí)行,但 C++ 則與它們不同,Android 應(yīng)用中的所有 C++ 指令會直接編譯為機器指令,也就是說,目標(biāo)設(shè)備的平臺架構(gòu)決定著 C++ 的編譯方法。移動手機一般搭載 ARM 處理器,因此,您為應(yīng)用添加的許多 C++ 依賴項 (例如攝像頭條形碼掃描庫) 僅與 ARM 處理器兼容。在這種情形下,如果您使用基于 x86 處理器的設(shè)備進(jìn)行開發(fā)工作,便會遇到應(yīng)用無法運行的問題。
過去,開發(fā)者需要通過模擬器鏡系統(tǒng)映像搭建一個完整的 ARM 環(huán)境,才能繞過這個限制并在 x86 機器上執(zhí)行 ARM 應(yīng)用。但是,把整個系統(tǒng)的 ARM 指令都轉(zhuǎn)換成 x86 指令會造成過高的性能負(fù)荷,因此與基于 x86 的系統(tǒng)映像相比,完整的 ARM 系統(tǒng)映像在 x86 宿主機上的運行速度會慢很多,而且它還無法使用 x86 處理器提供的硬件加速和 CPU 虛擬化技術(shù)。
全新的Android 11 系統(tǒng)映像與 ARM 兼容,它不僅允許整個系統(tǒng)在本機運行 x86 指令,而且還可以照常使用虛擬化技術(shù)。當(dāng)應(yīng)用的某個進(jìn)程需要使用 ARM 二進(jìn)制代碼時,代碼僅會在該進(jìn)程內(nèi)被轉(zhuǎn)換成 x86 指令,其余進(jìn)程將繼續(xù)在 x86 環(huán)境內(nèi)執(zhí)行,包括 Android 運行時 (ART) 以及其它性能關(guān)鍵庫,例如 libGLES和 libvulkan。除此以外,指令轉(zhuǎn)換器也不會執(zhí)行低層的硬件特定庫,從而避免高成本的內(nèi)存訪問檢測和相應(yīng)的性能影響。在 ARM 公司的協(xié)作下,新的模擬器系統(tǒng)映像在本地和持續(xù)集成框架內(nèi)均可運行。
Android 11 系統(tǒng)映像https://developer.android.google.cn/studio/releases/emulator#support_for_arm_binaries_on_android_9_and_11_system_images
libGLEShttps://developer.android.google.cn/ndk/guides/stable_apis#graphics
libvulkanhttps://developer.android.google.cn/ndk/guides/graphics/design-notes
下一步
如果您之前由于缺乏高性能的 ARM 支持,去選擇了實體機而非模擬器,不妨嘗試一下 Android 11 系統(tǒng)映像。此映像文件目前已隨 Android 11 開發(fā)者預(yù)覽版一同開放下載。您可通過 SDK Manager 或者 Android Virtual Device Manager將最新版本的系統(tǒng)映像下載至 Android Studio。
使用 Android Virtual Device Manager 創(chuàng)建一個運行 Android 11 的 AVD
Android 11 系統(tǒng)映像https://developer.android.google.cn/studio/releases/emulator#support_for_arm_binaries_on_android_9_and_11_system_images
Android Virtual Device Managerhttps://developer.android.google.cn/studio/run/managing-avds#createavd
一旦應(yīng)用在模擬器中成功運行后,請考慮適配 Chrome OS。Chrome OS 同樣也支持在 x86 筆記本上執(zhí)行 ARM 版本的 Android 應(yīng)用。通過構(gòu)建適用于 Chrome OS 的應(yīng)用,您可以挖掘大屏幕設(shè)備生態(tài)圈所蘊含的海量機遇,讓全球更多的用戶認(rèn)識您的應(yīng)用。
-
ARM
+關(guān)注
關(guān)注
134文章
9153瀏覽量
368494 -
Android
+關(guān)注
關(guān)注
12文章
3941瀏覽量
127717
發(fā)布評論請先 登錄
相關(guān)推薦
評論