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

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

有沒有64位的CyUSBSerial.dll和CyUSBSerial.lib,官方demo中都是32位的庫,無法在64位程序中運(yùn)行?
HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-應(yīng)用接續(xù)動(dòng)態(tài)配置遷移保持遷移連續(xù)性
為什么開發(fā)者都往Arm平臺(tái)遷移
從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的遷移指南

評(píng)論