JNI 填坑之旅

  1. JNI 打包各种平台so文件配置
    build.gradle中:
android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11"
                abiFilters "arm64-v8a", "armeabi", "armeabi-v7a", "x86", "x86_64"
            }
        }
    }
}

如上,在abiFilters中指定要打包输出的so平台类型即可,注意,这里还我们开发打包apk中的"abiFilters"意义是不一样的,正常开发中指定abiFilters是指打包apk时只将指定平台的so文件打包进去。
另外,需要注意的是,如果要输出armeabi平台的so文件,NDK需要降级到17以下。

  1. error: use of undeclared identifier 'bzero'
    由于NDK17及以上版本不再支持输出 armeabi,没办法,只好将NDK降级到 16版本,结果降级后,立马就编译报错,提示了几个use of undeclared identifier,查了下,小问题,直接把报错的函数所在的头文件include一下就好,

比如bzero头文件string.hassert头文件assert.h

你可能感兴趣的:(JNI 填坑之旅)