解决方案如下:
使用 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