今天遇到一个问题,第三方合作方只提供了arm架构的so,而我们的Android设备是arm64的,怎么办?现在就来讲讲怎么强制打包指定架构的so到我们的apk中。
以我们的工程目录下 libs/armeabi/libxxx.so 为例。分别介绍在 Android Studio 中和 Android.mk 中的方法。
Android Studio 中打包指定的 ABI 架构 so 到 apk 中
app/build.gradle
android {
...
defaultConfig {
...
ndk {
//armeabi armeabi-v7a arm64-v8a x86 x86_64
abiFilters 'armeabi'
}
}
sourceSets {
main {
//修改so的默认路径 app/src/jniLibs 为 app/libs
jniLibs.srcDirs = ['libs']
}
}
...
}
Android.mk 中打包指定的 ABI 架构 so 到 apk 中
Andriod.mk
LOCAL_PREBUILT_JNI_LIBS := app/libs/armeabi/libxxx.so
#arm arm64 x86 x86_64
LOCAL_MODULE_TARGET_ARCH := arm
附:获取目标设备的架构
my_archs := arm arm64 x86 x86_64
my_src_arch := $(call get-prebuilt-src-arch, $(my_archs))
在 Android Studio 和 Android.mk 中修改的方法都很简单。通过上面的方法可以解决没有arm64架构的so在64位的目标设备无法运行的问题。
版权声明:本文为QQxiaoqiang1573原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。