abi操作流程 如何為安卓應用提供64位原生的支持?
如何為安卓應用提供64位原生的支持?確保您的應用程序支持64位設備。從2019年8月1日開始,您在Google Play上發(fā)布的應用必須支持64位架構(gòu)。64位CPU可以為您的用戶提供更快、更豐富的體驗
如何為安卓應用提供64位原生的支持?
確保您的應用程序支持64位設備。
從2019年8月1日開始,您在Google Play上發(fā)布的應用必須支持64位架構(gòu)。64位CPU可以為您的用戶提供更快、更豐富的體驗。增加一個64位的應用版本,不僅可以提高性能,為未來的創(chuàng)新創(chuàng)造條件,還可以為只支持64位架構(gòu)的設備做準備。
本指南介紹了如何確保32位應用程序支持64位設備,以便您隨時采用。
評估你的應用如果你的應用只使用Java編程語言或Kotlin(包括任何庫或SDK)編寫的代碼,那就意味著應用已經(jīng)支持64位設備。如果您的應用程序使用任何本機代碼,或者您不確定您的應用程序是否使用此類代碼,您需要評估您的應用程序并采取相應的措施。
您的應用程序使用本機代碼嗎?
首先,您需要檢查您的應用程序是否使用了任何本機代碼。如果您的應用程序滿足以下條件,則您正在使用本機代碼:
使用任何C/C(本機)代碼。與任何第三方本地庫相關聯(lián)。它是由第三方應用程序構(gòu)建者使用本地庫構(gòu)建的。您的應用程序包含64位庫嗎?
確定應用程序是否包含64位庫的最簡單方法是檢查APK文件的結(jié)構(gòu)。在編譯時,APK將與應用程序所需的所有本地庫打包在一起。根據(jù)ABI,本地庫存儲在不同的文件夾中。您的應用程序不需要支持所有64位體系結(jié)構(gòu),但是對于您支持的每個本機32位體系結(jié)構(gòu),應用程序必須包含相應的64位體系結(jié)構(gòu)。
對于ARM架構(gòu),32位庫位于armeabi-v7a中。相應的64位庫位于arm64-v8a中。
對于x86架構(gòu),尋找x86(32位)和x86_64(64位)。
首先,確保兩個文件夾中都有本地庫??偨Y(jié)如下:
平臺32位庫文件夾64位庫文件夾ARM x86請注意,每個文件夾中的一組庫可能完全相同,也可能不完全相同,這取決于您的應用。你要達到的目標是保證你的應用能在只支持64位架構(gòu)的環(huán)境下正常運行。
通常,為32位和64位架構(gòu)編譯的APK或軟件包都會有這兩個ABI的文件夾,每個文件夾都有一組對應的本機庫。如果您的應用程序不支持64位架構(gòu),您可能會看到32位ABI文件夾,但不會看到64位文件夾。
使用APK分析器查找本地庫
APK分析器是一個工具,可以用來評估編制的APK在各個方面。反對我們在我們討論的例子中,我們將使用這個工具來查找本地庫,以確定我們是否有一個64位庫。
打開Android Studio,然后打開任意項目。從菜單中選擇構(gòu)建gt分析APK…
選擇要評估的APK。檢查lib文件夾,在那里你可以找到所有的 "。so "文件。如果你能 找不到任何 "。so "文件,就意味著應用程序已經(jīng)準備了相應的庫,而你沒有 我們不需要采取進一步的措施。如果你看到armeabi-v7a或x86,你有一個32位的庫。
檢查是否有類似的 "。so "arm64-v8a或x86_64文件夾中的文件。
如果你不 如果沒有任何arm64-v8a或x86_64庫,您需要更新編譯過程,以便在APK中開始編譯和打包相應的工件。
如果您看到32位和64位庫都打包在軟件包中,您可以跳到在64位設備上測試應用程序。
在解壓縮的APK中找到本地庫
APK文件在結(jié)構(gòu)上類似于zip文件,可以像zip文件一樣解壓縮。如果您更喜歡使用命令行或任何其他解壓縮工具,您也可以使用提取APK的方法。
只需解壓APK文件(取決于你使用的解壓工具,你可能需要將其重命名為。zip),然后按照上面的指南瀏覽解壓縮后的文件,以確定您的應用程序是否準備好支持64位設備。
例如,您可以從命令行運行以下命令:
注意本例中有armeabi-v7a庫和arm64-v8a庫,說明應用支持64位架構(gòu)。
使用64位庫編譯應用程序
下面描述了64位庫的編譯。不過需要指出的是,下面的內(nèi)容只是介紹如何編譯代碼以及可以在源代碼基礎上編譯的庫。
如果您使用任何外部SDK或庫,請確保根據(jù)上述步驟使用64位版本。如果64位版本不可用,請聯(lián)系相應SDK或庫的所有者,并在規(guī)劃支持64位設備的方案時考慮這一點。
用Android Studio或者Gradle編譯。
Android Studio項目大多使用Gradle作為底層編譯系統(tǒng),所以本節(jié)適合用這兩個工具進行編譯。編譯本機代碼很簡單,只需將arm64-v8a和/或x86_64(取決于您想要支持的架構(gòu))添加到 " "申請文件:
用CMake編譯
如果你應該如果用CMake編譯,可以通過將arm64-v8a傳遞給 "-丹德羅迪_ ABI "參數(shù):
此方法在使用時無效。請參閱使用Gradle編譯一節(jié)。
用ndk-build編譯。
如果您的應用程序是使用ndk-build編譯的,您可以修改 " "通過變量文件來編譯64位ABI:
此方法在使用時無效。請參閱使用Gradle編譯一節(jié)。
通過使用Android應用包來減少大小增加
向應用程序添加64位體系結(jié)構(gòu)支持可能會增加APK的大小。我們強烈建議您使用Android應用功能,以最大限度地減少在同一個APK中同時包含32位和64位本機代碼對APK大小的影響。
事實上,將應用程序更改為Android App Bundle不僅可以減少APK大小,甚至可以使其比現(xiàn)在更小。
游戲開發(fā)商
我們知道第三方游戲引擎的遷移是一個勞動密集型的過程,需要很長的準備時間。幸運的是,目前最常用的三個引擎都支持64位架構(gòu):
虛幻(2015年起)Cocos2d(2015年起)Unity(2018年起)Unity開發(fā)者升級到支持的版本。
Unity從2018.2和2017.4.16版本開始提供64位支持。
如果您發(fā)現(xiàn)您正在使用的Unity版本不支持64位架構(gòu),請決定升級到哪個版本,并按照Unity提供的指南遷移您的環(huán)境,以確保您的應用程序升級到可以編譯64位庫的版本。Unity建議您升級到編輯器的最新LTS版本,以獲得最新的功能和更新。
下表概述了Unity的各種版本以及您應該采取的措施:
Unity版本支持64位架構(gòu)嗎?建議的措施2018.4 (LTS)
??
(待發(fā)布)確保你的編譯設置可以輸出64位庫。2018.3
??
確保您的編譯設置可以輸出64位庫。2018.2
??
確保您的編譯設置可以輸出64位庫。2018.1
?
提供實驗性的64位支持。2017.4 (LTS)
??
2017年4月16日起支持64位架構(gòu)。確保您的編譯設置可以輸出64位庫。2017.3
??
升級到支持64位體系結(jié)構(gòu)的版本。2017.2
??
升級以支持64位架構(gòu)的版本。2017.1
??
升級到支持64位體系結(jié)構(gòu)的版本。5.6升
??
升級到支持64位體系結(jié)構(gòu)的版本。確保編譯設置可以輸出64位庫。
如果您使用的Unity版本支持64位Android庫,您可以調(diào)整編譯設置以生成64位版本的應用程序。您還需要使用IL2CPP后端作為腳本后端(詳見這里)。要設置Unity項目以編譯64位模式,請執(zhí)行以下操作:
轉(zhuǎn)到Build Settings,確保Android平臺旁邊顯示了Unity的logo,以確保你是為Android編譯的。* *如果Android平臺旁邊沒有顯示Unity徽標,請選擇Android,然后單擊切換平臺。單擊播放器設置。
轉(zhuǎn)到播放器設置面板gt Android設置gt其他設置gt配置。
將腳本后端設置為IL2CPP。
選擇* * "目標架構(gòu)和gtarm64復選框。
照常編譯!
請注意,在編譯ARM64架構(gòu)時,您需要專門為該平臺編譯您的所有資源。請跟隨團結(jié) 的指南來減少APK的大小,并考慮使用Android應用程序功能來減少大小的增加。
在64位硬件上測試應用程序
64位版本的應用程序應該提供與32位版本相同的質(zhì)量和功能集。請測試您的應用程序,以確保使用最新64位設備的用戶可以在您的應用程序中獲得良好的體驗。
要開始測試您的應用程序,您需要一個支持64位架構(gòu)的設備。如今,有許多流行的設備支持64位架構(gòu),如Googl
如何使用IPFS ENS托管您的Dapp并通過EthDNS訪問它?
步驟1:修改您的應用程序。
我們的應用程序基于創(chuàng)建-響應-應用程序。除了大量使用GraphQL,我認為它是一個非常標準的。反應應用程序。我們沒有。;不使用任何dapp框架(如:將構(gòu)建文件發(fā)布到IPFS。
我沒有。;不要詳細說明如何設置和運行IPFS守護進程(但這應該只是IPFS守護進程的問題)。
完成所有設置后,將剛剛編譯的構(gòu)建目錄添加到IPFS中。
步驟3::將contenthash設置為ENS
如果你不 現(xiàn)在還沒有ENS的名字,這是一個注冊的好機會。只需在ENS管理器中注冊一個新名稱,設置一個公共解析器,并通過選擇 "內(nèi)容 "記錄類型。
第四步。通過EthDNS訪問它。
如果通過ENS contenthash支持的瀏覽器/錢包打開(比如Status)。您應該可以在下看到相同的內(nèi)容。然而,你可以 不要指望你所有的朋友和家人都能在ENS支持的瀏覽器中看到你的內(nèi)容,這是EthDNS的作用。