① Javah配置,Tool settings填写的三项在不同平台是相同的,无需改动。
② 安装NDK ,下载安装包并安装。
③ 在AS中配置NDK路径
④ Make project,执行后再app/build/intermediates下会生成classes目录,内为生成的class文件。
⑤ 先创建要引用C代码的类,这里创建了一个MathKit类,并在类中写:
⑥ 用javah命令生成jni目录,及对应的头文件
上述命令在src/main/java中执行,执行结束后在main的同级目录下会生成一个jni目录,里边还有对应的.h头文件。
⑦ 修改app下的build.gradle文件:
·其中moduleName是随便写的,与将来在Java类中使用System.loadLobrary(“本地库名称”);以及生成的.so文件名称对应;
·ldLibs是要用到的jni库,一般由google提供,比如上边引入的log库可以让我们在C代码中使用LogCat日志;
·abiFilters指的是我们要生成哪些平台的so文件,这里生成arm平台和x86平台;
修改后,进行sync时,会报错
解决办法是,在gradle.properties中添加一行,如图:
·这句的作用是允许我们使用已经过时的NDK版本,不知道AndroidStudio要求使用哪个版本的NDK才不会报错,总之只要配置了这一句就可以使用比较旧的NDK版本了。
接下来的工作是,编写Native代码:
⑧ 在jni目录下新建一个.c或者.cpp文件。
内部代码为:
此外还应新建一个空的.c文件,否则会报错,这应该是自身的bug.
然后执行build->rebuild project,生成.so文件
⑨ 运行app,完成。