- JNI 打包各種平臺so文件配置
在build.gradle
中:
android {
defaultConfig {
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
abiFilters "arm64-v8a", "armeabi", "armeabi-v7a", "x86", "x86_64"
}
}
}
}
如上,在abiFilters
中指定要打包輸出的so平臺類型即可,注意,這里還我們開發(fā)打包apk中的"abiFilters"意義是不一樣的,正常開發(fā)中指定abiFilters
是指打包apk時(shí)只將指定平臺的so文件打包進(jìn)去。
另外,需要注意的是,如果要輸出armeabi
平臺的so文件,NDK需要降級到17以下。
-
error: use of undeclared identifier 'bzero'
由于NDK17及以上版本不再支持輸出armeabi
,沒辦法,只好將NDK降級到 16版本,結(jié)果降級后,立馬就編譯報(bào)錯(cuò),提示了幾個(gè)use of undeclared identifier
,查了下,小問題,直接把報(bào)錯(cuò)的函數(shù)所在的頭文件include一下就好,
比如bzero
頭文件string.h
,assert
頭文件assert.h