🎉好消息!Android 模擬器可以運行 ARM 應用了

来源:https://www.cnblogs.com/inferjay/archive/2020/03/27/12584929.html
-Advertisement-
Play Games

作為 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 模擬的性能開銷。

新的 Android 11(Google api) x86 系統映像支持 ARM ABIs,而舊的 Android Oreo 系統映像則不支持

詳情

這樣做的意義可能需要一些上下文,特別是如果你只使用 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)和其他性能關鍵庫,如 libGLESlibvulkan。此外,轉換器避免了昂貴的記憶體訪問插裝和相關性能的影響,因為它避免了執行低級別的特定於硬體的庫。這些新的模擬器系統映像既可以在本地使用,也可以在您自己的持續集成基礎設施上使用。由於與 ARM 有限公司的合作,這是可能的。

展望未來

如果你之前因為缺乏對 ARM 的支持而選擇了物理設備,那麼試試 Android 11 系統鏡像,它們現在可以和 Android 11 開發者預覽版一起使用。 這些系統映像可以通過 SDK 管理器或 Android 虛擬設備管理器在 Android Studio 中下載。

使用 Android 虛擬設備管理器創建一個運行 Android 11的 AVD

一旦你讓你的應用在模擬器上運行,可以考慮把它改造成適用於 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開發技術周刊
掃碼關註 Android 開發技術周報公眾號


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文存在 "視頻版本" ,請知悉 項目簡介 項目來源於: "https://gitee.com/PositiveMumu/CakesShop/tree/master" 這次分享一個蛋糕商場系統,還是很簡單的系統。界面簡潔但不粗糙。。 本系統基於 JSP+Servlet+C3P0+Mysql+JDBC ...
  • truncate 與 delete 的區別 truncate table :刪除內容、不刪除定義、釋放空間。 delete table : 刪除內容、不刪除定義、不釋放空間。 drop table :刪除內容和定義,釋放空間。 1、truncate table 表名,只能刪除表中全部數據。 dele ...
  • 在瞭解臟讀,不可重覆度,幻讀之前,首先要明白這三種情況的出現都是和資料庫併發事務有關聯的,如果所有的讀寫都按照隊列的形式進行,就不會出現問題。 名詞解析和解決方案 臟讀 臟讀又稱無效數據讀出(讀出了臟數據)。一個事務讀取另外一個事務還沒有提交的數據叫臟讀。 例如:事務T1修改了某個表中的一行數據,但 ...
  • `Redis key value`存儲系統。 Redis支持五種數據類型: (字元串) (列表) (hash表) (集合) (有序集合) 和 類似, 支持的數據類型更豐富、數據能持久化。 把數據全部存儲在記憶體中,斷電後會掛掉,數據不能超過記憶體大小。 而redis`數據會定期備份到硬碟上。 落地策略 ...
  • 1.在 資料庫內如何讓自動增加欄位從0開始 2.表中有A B C三列時,用SQL語句實現:當A列大於B列時選擇A列,否則選擇B列,當B列大於C列時選擇B,否則選擇C列 3. 是一個 存儲系統。支持五種數據類型: (1) (字元串) (2) (列表) (3) (`hash`表) (4) (集合) (5 ...
  • 很苦惱,PROD上的SSIS項目,日積月累的往裡部署,加包,也沒覺得是個什麼問題。 但是今天從需要從PROD上把這個項目中所有的包都down下來,VS居然報錯Out Of Memory,無論是直接連接SSIS Catelog或者用SSMS導出ispac均報錯。 解決方法很簡單,使用PowerShel ...
  • 2020 年 3 月,Kylin 社區決定將 Kylin 的標語從「Extreme OLAP Engine for Big Data」更改為 「Analytical Data Warehouse for Big Data」,以更加準確地描述 Kylin 的能力和定位,也更容易地讓用戶通過搜索引擎檢索... ...
  • 如何併發的訪問資料庫呢?答案就是加鎖。 接下來說一下,資料庫的鎖機制,資料庫中都有哪些鎖? 首先呢,鎖是一種併發控制技術,鎖是用來在多個用戶同時訪問同一個數據的時候保護數據的。 有2種基本的鎖類型: 共用(S)鎖:多個事務可封鎖一個共用頁;任何事務都不能修改該頁;通常是該頁被讀取完畢,S鎖立即被釋放 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...