2020 年 10 月,Arm 宣布,從 2022 IP 開始,未來的所有 Cortex-A”大核”都將僅支持 64 位代碼。Oppo 和小米這兩家中國領(lǐng)先的移動(dòng)終端制造商以及領(lǐng)先的游戲引擎 Unity(中國)紛紛對 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ā)人員需要考慮的一些方面以及對應(yī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)行。對于那些向?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ù)包將擁有分別針對兩種 ABI 的文件夾,每個(gè)文件夾內(nèi)包含一組對應(yīng)的本地庫。如果不支持 64 位,開發(fā)人員可能只會(huì)看到 32 位 ABI 文件夾,卻沒有 64 位文件夾。
使用工具查驗(yàn)本地庫
開發(fā)人員還可以使用不同的工具來查驗(yàn)app中的本地庫。APK Analyzer 是 Android Studio 中一款可用的 Android 工具,可幫助開發(fā)人員評估某個(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ā)人員需要對以 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ā)人員
正如我們在上一篇極術(shù)社區(qū)的博客中提到的,三個(gè)最常用的游戲引擎 Unreal、Cocos2d-x 和 Unity 目前都支持 64 位。事實(shí)上,這些領(lǐng)先的游戲引擎都支持 64 位對于游戲開發(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)該相對較輕松,干擾因素也最少。只需花費(fèi)少量成本或時(shí)間完成遷移后,中國開發(fā)人員將能享受到多種多樣的巨大好處。有關(guān)更多詳細(xì)信息,我們建議遵循 Android 開發(fā)最佳實(shí)踐或閱讀Arm 64 位白皮書。
Arm 正在與合作伙伴展開密切合作,了解哪些生態(tài)系統(tǒng)、技術(shù)或商業(yè)方面的問題會(huì)妨礙app向 64 位遷移。我們向中國開發(fā)人員提出的建議非常簡單——立即著手,開始遷移到 64 位。現(xiàn)在就開始構(gòu)建 64 位版本的應(yīng)用,在主要開發(fā)、優(yōu)化和測試平臺(tái)中改用 64 位,對本機(jī)和 Java 應(yīng)用程序進(jìn)行仔細(xì)檢查,盡快升級所有 32 位庫或引擎。
責(zé)任編輯:xj
原文標(biāo)題:Arm 64位遷移知識匯總
文章出處:【微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
ARM
+關(guān)注
關(guān)注
134文章
9308瀏覽量
375033 -
代碼
+關(guān)注
關(guān)注
30文章
4886瀏覽量
70257 -
apk
+關(guān)注
關(guān)注
0文章
24瀏覽量
5204
原文標(biāo)題:Arm 64位遷移知識匯總
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(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的遷移指南

MPU進(jìn)入64位時(shí)代,Microchip推出PIC64系列產(chǎn)品
Pine64 發(fā)布 Oz64 單板計(jì)算機(jī):Arm、RISC-V任你切換

評論