开发环境:win10 androidstudio 3.1.2 NDK17
1,NKD开发请参考:https://blog.csdn.net/ezconn/article/details/82529101
2,完成1之后,打包安装好,运行时,出现:UnsatisfiedLinkError异常可能是如下原因之一:
1)NDK 17版本太高,换成NDK16就好了,可能是高版本对不再支持ndk-build编译
2).h文件名或者里面的函数名和Java里面的本地方法(Native修饰的方法)路径是否一致(静态注册需要一致)
3).so库放置位是否需要在build.gradle里面配置;例如:放在项目的app目录下面和src同级的libs目录下,这就需要配置
sourceSets.main {
jniLibs.srcDir 'libs'
}
放在项目的main目录下的和java同级的jniLibs目录下就不需要配置以上类似的代码
4)加载生成的动态库的文件名,生成.so时指定的名字,Android.mk中LOCAL_MODULE := Java2c三者是否一致;例如我的都是Java2c;
//加载生成的.so
static {
System.loadLibrary("Java2c");
}
//ndk编译生成.so文件
ndk{
moduleName "Java2c" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。
}