欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何為安卓應用提供64位原生的支持

江奕云2年前59瀏覽0評論

如何為安卓應用提供64位原生的支持?

確保您的應用支持 64 位設備

從 2019 年 8 月 1 日開始,您在 Google Play 上發布的應用必須支持 64 位架構。64 位 CPU 能夠為您的用戶提供更快、更豐富的體驗。添加 64 位的應用版本不僅可以提升性能、為未來創新創造條件,還能針對僅支持 64 位架構的設備做好準備。

本指南介紹了如何確保 32 位應用為支持 64 位設備做好準備,供您隨時采用。

評估您的應用

如果您的應用僅使用以 Java 編程語言或 Kotlin 編寫的代碼(包括任何庫或 SDK),那么就表示該應用已經支持 64 位設備。如果您的應用使用了任何原生代碼,或者您不確定自己的應用是否使用了這類代碼,那么您需要評估應用并相應采取措施。

您的應用是否使用了原生代碼?

首先需要檢查您的應用是否使用了任何原生代碼。如果您的應用符合以下情況,便是使用了原生代碼:

使用了任何 C/C++(原生)代碼。與任何第三方原生庫關聯。通過使用原生庫的第三方應用構建程序構建而成。

您的應用是否包含 64 位庫?

要確定應用是否包含 64 位庫,最簡單的方法就是檢查 APK 文件的結構。在編譯時,APK 會與應用所需的所有原生庫打包在一起。原生庫會根據 ABI 而存儲在不同的文件夾中。您的應用無需支持所有 64 位架構,但對于您支持的每種原生 32 位架構,則應用都必須包含相應的 64 位架構。

對于 ARM 架構,32 位庫位于 armeabi-v7a 中。對應的 64 位庫位于 arm64-v8a 中。

對于 x86 架構,請查找 x86(32 位)和 x86_64(64 位)。

首先要確保這兩個文件夾中都有原生庫。總結如下:

平臺32 位庫文件夾64 位庫文件夾ARM x86

請注意,每個文件夾中的一套庫可能完全相同,也可能不完全相同,這取決于您的應用。您應達到的目標是確保您的應用能夠在僅支持 64 位架構的環境中正常運行。

通常情況下,同時針對 32 位和 64 位架構編譯的 APK 或軟件包會具有這兩種 ABI 的文件夾,每個文件夾中都有一套相應的原生庫。如果您的應用不支持 64 位架構,那么您很可能會看到 32 位 ABI 文件夾,但不會看到 64 位文件夾。

使用 APK 分析器查找原生庫

APK 分析器是可用來對所編譯的 APK 進行各方面評估的工具。針對我們目前所討論的情況,我們將使用該工具查找原生庫,以確定是否具備 64 位庫。

打開 Android Studio,然后打開任一項目。從菜單中依次選擇 Build > Analyze APK…選擇您要評估的 APK。

查看 lib 文件夾,您可以在其中找到所有“.so”文件。如果在您的應用中找不到任何“.so”文件,則說明該應用已經準備好相應的庫,您無需采取進一步措施。如果您看到 armeabi-v7a 或 x86,則說明您有 32 位庫。

檢查是否在 arm64-v8a 或 x86_64 文件夾中也有類似的“.so”文件。

如果您沒有任何 arm64-v8a 或 x86_64 庫,則需要更新編譯流程以開始在 APK 中編譯并打包相應工件。

如果您看到 32 位和 64 位的庫均已打包到軟件包中,則可以跳至在 64 位設備上測試應用。

在解壓縮的 APK 中查找原生庫

APK 文件的結構類似于 zip 文件,可以像 zip 文件一樣解壓縮。如果您更喜歡使用命令行或任何其他解壓縮工具,也可以采用解壓縮 APK 的方法。

只需解壓縮 APK 文件(根據您使用的解壓縮工具,您可能需要將其重命名為 .zip),然后按照上文中的指南瀏覽解壓縮后的文件,即可確定您的應用是否已經為支持 64 位設備做好準備了。

例如,您可以從命令行中運行如下命令:

請注意,此示例中存在 armeabi-v7a 庫和 arm64-v8a 庫,這表明該應用支持 64 位架構。

使用 64 位庫編譯應用

下面針對編譯 64 位庫做出了相關的說明。不過,需要指出的是,以下內容僅介紹了如何編譯在源代碼的基礎上可編譯的代碼和庫。

如果您使用任何外部 SDK 或庫,請確保按照上文所述的步驟使用 64 位版本。如果沒有 64 位版本可用,請與相應 SDK 或庫的所有者聯系,并在規劃支持 64 位設備的方案時將這一點考慮在內。

使用 Android Studio 或 Gradle 進行編譯

大多數 Android Studio 項目都使用 Gradle 作為底層編譯系統,因此本部分適用于使用這兩種工具進行編譯的情況。針對原生代碼進行編譯很簡單,只需將 arm64-v8a 和/或 x86_64(取決于您要支持的架構)添加到應用的“build.gradle”文件中的 ndk.abiFilters 設置:

使用 CMake 進行編譯

如果您的應用是使用 CMake 編譯的,則可以通過將 arm64-v8a 傳遞到“-DANDROID_ABI”參數來編譯 64 位 ABI:

在使用 時,此方法無效。請參閱使用 Gradle 進行編譯部分。

使用 ndk-build 進行編譯

如果您的應用是使用 ndk-build 編譯的,則可以通過 變量修改“app.mk”文件,從而編譯 64 位 ABI:

在使用 時,此方法無效。請參閱使用 Gradle 進行編譯部分。

利用 Android App Bundle 減小大小增加量

為您的應用添加 64 位架構支持可能會導致 APK 的大小增加。我們強烈建議您利用 Android APP Bundle 功能,以盡量減小因在同一 APK 中同時包含 32 位和 64 位原生代碼而對 APK 大小產生的影響。

實際上,讓應用改用 Android App Bundle 不僅能夠降低 APK 大小,甚至能讓其變得比現在更小。

游戲開發者

我們知道,遷移第三方游戲引擎是一個耗費人力的過程,并且需要很長的準備時間。慶幸的是,三大最常用的引擎目前都支持 64 位架構:

Unreal(自 2015 年起)Cocos2d(自 2015 年起)Unity(自 2018 年起)

Unity 開發者升級到支持的版本

Unity 自版本 2018.2 和 2017.4.16 開始提供 64 位支持。

如果您發現自己使用的 Unity 版本不支持 64 位架構,請確定要升級到的版本,并按照 Unity 提供的指南遷移您的環境,確保將您的應用升級到可編譯 64 位庫的版本。Unity 建議您升級到該編輯器的最新 LTS 版本,以獲取最新的功能和更新。

下面的圖表概述了 Unity 的各個版本以及您應該采取的措施:

Unity 版本版本是否支持 64 位架構?建議采取的措施

2018.4 (LTS)

??

(待發布)確保您的編譯設置能夠輸出 64 位庫。

2018.3

??

確保您的編譯設置能夠輸出 64 位庫。

2018.2

??

確保您的編譯設置能夠輸出 64 位庫。

2018.1

?

提供實驗性的 64 位支持。

2017.4 (LTS)

??

自 2017.4.16 起支持 64 位架構。確保您的編譯設置能夠輸出 64 位庫。

2017.3

??

升級到支持 64 位架構的版本。

2017.2

??

升級到支持 64 位架構的版本。

2017.1

??

升級到支持 64 位架構的版本。

<=5.6

??

升級到支持 64 位架構的版本。

確保編譯設置能夠輸出 64 位庫

如果您使用的 Unity 版本支持 64 位 Android 庫,則可以通過調整編譯設置來生成 64 位版本的應用。您還需要使用 IL2CPP 后端作為 Scripting Backend(詳見此處)。要為編譯 64 位架構而設置 Unity 項目,請執行以下操作:

轉到 Build Settings,然后確認 Unity 標志是否顯示在 Android 平臺旁邊,以確保您是在針對 Android 進行編譯。**如果 Unity 標志未顯示在 Android 平臺旁邊,請選擇 Android,然后點擊 Switch Platform。

點擊 Player Settings。

依次轉到 Player Settings Panel > Settings for Android > Other Settings > Configuration

將 Scripting Backend 設為 IL2CPP。

依次選擇**“Target Architectures”> ARM64 復選框。

照常進行編譯!

請注意,在編譯 ARM64 架構時,您需要專門針對該平臺編譯您的所有資源。請按照 Unity 的指南來縮減 APK 大小,同時考慮利用 Android APP Bundle 功能來減小大小增加量。

在 64 位硬件上測試應用

64 位版本的應用應提供與 32 位版本相同的質量和功能集。請對您的應用進行測試,以確保使用最新的 64 位設備的用戶能夠在您的應用中獲得優質的體驗。

要開始測試您的應用,您要有支持 64 位架構的設備。時下有很多支持 64 位架構的熱門設備,例如 Google 的 Pixel 以及其他旗艦設備。

要測試您的 APK,最簡單的方法就是使用 adb 安裝該應用。大多數情況下,您可以提供 參數,用以指示要將哪些庫安裝到設備上。這樣在設備上安裝該應用時便會僅包含 64 位庫。

安裝成功后,請照常對應用進行測試,以確保其質量與 32 位版本相同。

java 6.0 64位,如何為安卓應用提供64位原生的支持