解決方案如下:
使用 64 位庫編譯應用
下面針對編譯 64 位庫做出了相關的說明。不過,需要指出的是,以下內容僅介紹瞭如何編譯在源代碼的基礎上可編譯的代碼和庫。
如果您使用任何外部 SDK 或庫,請確保按照上文所述的步驟使用 64 位版本。如果沒有 64 位版本可用,請與相應 SDK 或庫的所有者聯繫,並在規劃支持 64 位設備的方案時將這一點考慮在內。
使用 Android Studio 或 Gradle 進行編譯
大多數 Android Studio 項目都使用 Gradle 作爲底層編譯系統,因此本部分適用於使用這兩種工具進行編譯的情況。針對原生代碼進行編譯很簡單,只需將 arm64-v8a 和/或 x86_64(取決於您要支持的架構)添加到應用的“build.gradle”文件中的 ndk.abiFilters 設置:
// Your app's build.gradle
apply plugin: 'com.android.app'
android {
compileSdkVersion 27
defaultConfig {
appId "com.google.example.64bit"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
// ...
使用 CMake 進行編譯
如果您的應用是使用 CMake 編譯的,則可以通過將 arm64-v8a 傳遞到“-DANDROID_ABI”參數來編譯 64 位 ABI:
:: Command Line
> cmake -DANDROID_ABI=arm64-v8a … or
> cmake -DANDROID_ABI=x86_64 …
在使用 externalNativeBuild
時,此方法無效。請參閱使用 Gradle 進行編譯部分。
使用 ndk-build 進行編譯
如果您的應用是使用 ndk-build 編譯的,則可以通過 APP_ABI
變量修改“app.mk”文件,從而編譯 64 位 ABI:
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
參考資料:https://developer.android.google.cn/distribute/best-practices/develop/64-bit