温故而知新可以为师矣
NDK配置:
1、在gradlew的local.properties里面配置NDK的位置,或者在Android Studio设置里面配置。
2、在gradlew的gradle.properties里面的最后一行添加:android.useDeprecatedNdk = true,为了兼容老版本
JNI的编写步骤:
1、编写一个java文件,里面定义native类型的方法,表示这是要去调用C语言代码对应的方法
2、在main目录里面新建jni.c的文件,然后在.c文件里面写对应的方法,sayHello(JNIEnv* env,jobject jobj)这两个参数是固定的
修改后的截图代码:
3、在项目的gradle文件里面配置nkd的module,moduleName的名字就是第一步的的system.loardLib的名字,
编译完成后会有.so文件产生
4、在JNI.java文件里面调用system.loadLib();方法去加载调用.so文件,(即图中的2)
5、在要使用的Java文件里面调用即可使用正常使用jni了
注意事项:如果是在Android studio3.0+ 编译的.so文件的话,就不需要将.so文件放入libs相应的目录了,要不然会报错:More than one file was found with OS independent path 'lib/x86_64/libHello.so',有网友说是编译生成apk的时候吧build生成的.so文件自动放进去了,具体什么原理也还没有懂。