1.创建一个Android项目,代码片段如下:
com.example.hellojni3.MainActivity.java文件:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(JniUtils.stringFromJNI());
setContentView(tv);
}
}
com.example.hellojni3.JniUtils.java文件:
public class JniUtils {
static {
System.loadLibrary("hello-jni"); //加载由c/c++代码生成的动态库,注意它的名称与后面相呼应(注意后面生成的.so文件全名是libhello-jni.so)
}
public static native String stringFromJNI(); //c/c++代码,这时还没有编写
}
2.编写c/c++代码。
打开项目src文件夹并在该文件夹弹出命令窗口,输入javah com.example.hellojni3.JniUtils,生成一个.h文件,内容如下:
将它重命名为hello-jni.c(这时不再是.h文件)并修改成
在项目根目录下新建一个jni文件夹,把hello-jni.c放进去再新建两个文件,一个Android.mk和一个Application.mk。
3.编写Android.mk和Application.mk
4.配置NDK路径到环境中. NDK根目录下有一个ndk-build.cmd的命令脚本,为了方便使用该脚本命令我们先把NDK根目录添加到系统环境中。
5.生成动态库.so
在项目根目录下弹出命令窗口,输入ndk-build
6.打包apk包。
关于Android.mk的语法参考:https://www.jianshu.com/p/bee78310e420