AndroidStudio+NDK(JDK版本9.0.1)
配置NDK的环境变量,JDK我下载的最新的版本9.0.1 ,可以使用dos命令java -version来查看自己的JDK版本,NDK配置
检验是否配置成功如果出现这个那就成功了创建java类JniUtils声明一个native的方法
使用AS自带的命令行工具(Terminal)通过javac命令编译生成.class文件
注意只要路径没问题,直接回车不报错这说明就成功生成了!-
接下来就是编译生成头文件了,其实前几个步骤网上有很多帖子,大家一搜就很多哦,我之所以决定重新再写一篇博客是因为JDK升级以后的版本javah这个命令被javac -h替代了,所以决定把它分享出来,让更多人可以少踩一点坑
按照以前的javah命令做的话如下图所示
JDK会提示你使用新的命令来使用javah,但是如果直接把javah换成javac -h就成功了吗,未必,看图
这个时候报错了,可是奇怪的是.h也生成了,但是既然报错这就说明肯定还是命令有问题,于是我就百度报错的原因,好多人说编译java文件需要写后缀名,先放一张语法图于是我又重新改成了这样
当然就成功生成了头文件,刷新一下就出来了
但是还没完,这里有个重要的问题是jni文件的位置,应该与java同级,在main下面,不然编译的时候会找不到所以我把他拖拽出来5.现在该编写.c文件了,只要将.h里面未实现的方法粘过来实现它就可以
6.编写Android.mk
Application.mk
7. 使用ndk-build编译.so库,先cd到jni文件夹的上一级 cd app\src\main然后ndk-build
libs下面直接就有生成的so
8.运行
gradle配置加载so库sourceSets{
main{
jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk
jniLibs.srcDir 'src/main/libs'
}
}