1. 创建一个普通的Android Studio的工程(New Project时不勾选Include C++ support),然后开始配置External Tools。
Preferences -> Toools -> External Tools
添加我们需要用的三个工具(图里我已经加好了),点击“+”添加。下面是javah、ndk-build、ndk-build clean的配置。
图中的宏可以点击Insert macros插入。
2. 配置完之后在任意位置点击右键,选择External Tools就可以使用上面三个命令了。
3. 右键单击你的Module新建jni目录
4.修改app下的build.gradle文件, 如下图
5.修改MyNdk下的gradle.properties文件(如果没有此文件,自己新建一个),如下图
android.useDeprecatedNdk=true
如果不这么做的话印象中小于r12版本的ndk会报错。(使用Preferences-> Appearance & Behavior -> System Settings -> Android SDK 可以更新到最新NDK)
6.新建TestJni.java
7.运行Build -> Make Project,然后再执行External Tools -> javah,结果如下图:
这个地方最开始我遇到了这样一个问题:
Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: Studio.app/Contents/jre/jdk/Contents/Home/jre/lib/charsets.jar:/Applications/Android
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:129)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:107)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:64)
at com.sun.tools.javah.JavahTask.run(JavahTask.java:503)
at com.sun.tools.javah.JavahTask.run(JavahTask.java:329)
at com.sun.tools.javah.Main.main(Main.java:46)
查了一下charsets.jar是GBK编码需要用到的库,到对应目录下找charsets.jar果然没有。然后到自己装的Java目录下找发现是有的,然后修改Android Studio的JDK Location。如下图:
再次执行External Tools -> javah,成功。
8.会在cpp目录下生成我们想要的头文件com_testjni_TestJni.h,接下来我们需要在cpp目录下创建Android.mk、Application.mk以及native_lib.cpp。
9.右键单击jni目录,执行External Tools -> ndk build
10.编译成功的so文件就在sec/main/libs目录下。
11.编写MainActivity中的代码,调用Native方法。
12.编译运行成功。
网友评论