2020 年 10 月,Arm 宣布,從 2022 IP 開始,未來的所有 Cortex-A”大核”都將僅支持 64 位代碼。Oppo 和小米這兩家中國領(lǐng)先的移動終端制造商以及領(lǐng)先的游戲引擎 Unity(中國)紛紛對 Arm 宣布向 64 位遷移和為之付出的努力表示支持。
Arm 認為,遷移到 64 位是中國的開發(fā)人員都應邁出的積極一步。如果想要打造能滿足消費者需求的全新、更復雜、安全可靠、身臨其境的體驗,他們的app必然需要遷移到 64 位。另外,預計到 2023 年將出現(xiàn)僅支持 64 位的移動設(shè)備,屆時他們的app還需要與這些設(shè)備相兼容。
64 位不僅能帶來許多好處(如上一篇極術(shù)社區(qū)的博客中所述),例如優(yōu)化性能、提高安全性、改善功效和降低成本,而且將app遷移到 64 位的過程十分簡單,并不具備太多挑戰(zhàn)。當然,下文也列出了在遷移到 64 位的過程中,中國開發(fā)人員需要考慮的一些方面以及對應采取的措施。請注意,下列步驟都是建立在開發(fā)人員使用 Google Android Studio 進行app開發(fā)的假設(shè)基礎(chǔ)上。
查看app代碼
全部由 Java 編程語言或 Kotlin 編寫而成的Android 應用程序(包括所有庫或 SDK)都將自動能在 64 位移動設(shè)備上運行。對于那些向?qū)?第三方本地庫發(fā)出 Java 本地接口 (JNI) 調(diào)用(以進行用戶行為分析、加密、云服務(wù)等)的 Java 應用程序,這些庫也需要遷移到 64 位,才能消除所有 32 位依賴項。而且,使用 Arm NEON 指令編寫的大多數(shù)代碼無需更改即可編譯成 64 位。但是,如果app使用的是本地庫,則其必須是 64 位版本,這可能需要額外的開發(fā)工作。
查驗本機代碼
如果開發(fā)人員不確定他們的app是否使用本機代碼,可以檢查以下三項:
? app是否使用了任何 C/C++(本機)代碼
? app是否與任何第三方本地庫相關(guān)聯(lián)
? app是否由某個使用本地庫的第三方app生成器構(gòu)建而成。
使用 APK 查驗本地庫
根據(jù)應用二進制接口 (ABI),本地庫存儲在不同文件夾內(nèi)。通常情況下,為 32 位和 64 位架構(gòu)構(gòu)建的 APK 或數(shù)據(jù)包將擁有分別針對兩種 ABI 的文件夾,每個文件夾內(nèi)包含一組對應的本地庫。如果不支持 64 位,開發(fā)人員可能只會看到 32 位 ABI 文件夾,卻沒有 64 位文件夾。
使用工具查驗本地庫
開發(fā)人員還可以使用不同的工具來查驗app中的本地庫。APK Analyzer 是 Android Studio 中一款可用的 Android 工具,可幫助開發(fā)人員評估某個已構(gòu)建的 APK 的不同方面。開發(fā)人員還可以通過解壓縮 APK 來查驗本地庫,因為這些文件的結(jié)構(gòu)都類似于壓縮文件,所以也可以采取類似的提取方式。
從 32 位移植到 64 位
如果應用代碼已經(jīng)在 iOS 上順利運行,則無需再做任何額外工作。但是,如果這是應用代碼初次構(gòu)建用于 64 位系統(tǒng),則需要解決的主要問題是指針不再適合于 int 之類的 32 位整型。因此,開發(fā)人員需要對以 int、unsigned 或 uint32_t 類型存儲指針的代碼進行更新。
減輕 64 位帶來的規(guī)模增加
為應用程式添加 64 位架構(gòu)的支持可能導致 APK 大小隨之增加。Android App Bundle 功能可以最大限度地降低同一 APK 中同時包含 32 位和 64 位代碼所帶來的規(guī)模影響。在大多數(shù)情況下,將應用切換為使用 Android App Bundles 實際上有助于改善 APK 的大小,甚至小于 32 位時的應用大小。
游戲開發(fā)人員
正如我們在上一篇極術(shù)社區(qū)的博客中提到的,三個最常用的游戲引擎 Unreal、Cocos2d-x 和 Unity 目前都支持 64 位。事實上,這些領(lǐng)先的游戲引擎都支持 64 位對于游戲開發(fā)人員而言是一大利好消息,因為要為第三方游戲引擎遷移應用是一個前置時間非常長的繁雜過程。
測試應用
64 位版本的應用準備就緒后,應能提供與 32 位版本相同的質(zhì)量和功能集。但是,這只有通過app測試才能保證。測試需要在支持 64 位的設(shè)備上完成。幸運的是,如今中國國內(nèi)市場上的絕大多數(shù)智能手機都已兼容 64 位。
發(fā)布app
app準備就緒后,開發(fā)人員就可以照常發(fā)布。與現(xiàn)有的流程一樣,我們建議還是繼續(xù)遵循app部署的最佳實踐。Android 建議利用閉環(huán)測試軌道,先向有限數(shù)量的用戶推行,以確保app質(zhì)量一致。
提供更多信息和支持
根據(jù)上述信息,中國開發(fā)人員向 64 位遷移的過程應該相對較輕松,干擾因素也最少。只需花費少量成本或時間完成遷移后,中國開發(fā)人員將能享受到多種多樣的巨大好處。有關(guān)更多詳細信息,我們建議遵循 Android 開發(fā)最佳實踐或閱讀Arm 64 位白皮書。
Arm 正在與合作伙伴展開密切合作,了解哪些生態(tài)系統(tǒng)、技術(shù)或商業(yè)方面的問題會妨礙app向 64 位遷移。我們向中國開發(fā)人員提出的建議非常簡單——立即著手,開始遷移到 64 位?,F(xiàn)在就開始構(gòu)建 64 位版本的應用,在主要開發(fā)、優(yōu)化和測試平臺中改用 64 位,對本機和 Java 應用程序進行仔細檢查,盡快升級所有 32 位庫或引擎。
責任編輯:xj
原文標題:Arm 64位遷移知識匯總
文章出處:【微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
ARM
+關(guān)注
關(guān)注
134文章
9353瀏覽量
377631 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70757 -
apk
+關(guān)注
關(guān)注
0文章
24瀏覽量
5269
原文標題:Arm 64位遷移知識匯總
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于瑞薩64位MPU RZ/G2L進行32位應用軟件開發(fā)

Windows Arm64托管運行器正式支持GitHub Actions
Arm助力開發(fā)者加速遷移至Arm架構(gòu)云平臺 Arm云遷移資源分享
使用智能工具簡化向Arm平臺的遷移過程

有沒有64位的CyUSBSerial.dll和CyUSBSerial.lib,官方demo中都是32位的庫,無法在64位程序中運行?
HarmonyOS Next 應用元服務(wù)開發(fā)-應用接續(xù)動態(tài)配置遷移保持遷移連續(xù)性
為什么開發(fā)者都往Arm平臺遷移
從TMS320C64x遷移到TMS320C64x+

從EDMA v2.0遷移到EDMA v3.0 TMS320C64X DSP

從STM32到基于Arm的MSPM0的遷移指南

從遷移到基于Arm STM32的MSPMO指南

將軟件從8位(字節(jié))可尋址CPU遷移至C28x CPU

RV64之64位地址指令
從Renesas RL78到基于Arm的MSPM0的遷移指南

評論