在android studio中集成javah, ndk-build进行JNI开发

最近在搞一个android上控制LED灯闪烁的功能,用到了串口编程,搜索了一下,发现Google发布了一个demo,android-serialport-api。有现成的代码和APK,要想自己改JNI也比较简单,就一个C文件。我把代码下载后,想在android studio下重新编一个so,在此记录一下。

一、环境准备:NDK(针对windows机器)

android SDK已经自带ndk-bundle了,对应的目录就是Android/sdk/ndk-bundle。先确保ndk-build命令能运行,打开CMD窗口,如果能看到以下内容,说明已经配置成功。

在android studio中集成javah, ndk-build进行JNI开发

如果提示“不是内部命令或外部命令”之类的,那是环境变量没配好。

在android studio中集成javah, ndk-build进行JNI开发

添加一个系统变量,指向本地ndk目录。

在android studio中集成javah, ndk-build进行JNI开发

把新加的变量名加到Path路径后面即可。

二、生成头文件

当然可以通过命令行的方式,javah -jni 之类的,但是android studio已经简化这个工作了,配置一下,只需要右键生成.h文件即可。请看下面。

配置工作本质上也是调用javah命令。打开android studio的设置窗口,选择External Tools -> 新建(那个绿色+号)

在android studio中集成javah, ndk-build进行JNI开发

填上以下内容。点击右边的Insert Macros有惊喜哦^^

在android studio中集成javah, ndk-build进行JNI开发

为了后面在android studio直接运行ndk-build命令,此处也配置一个

在android studio中集成javah, ndk-build进行JNI开发

好了,万事俱备,只差怎么生成JNI层的h文件了。

写一个包含native方法的Java,比如这样的:

在android studio中集成javah, ndk-build进行JNI开发

非常简单,两个方法,位于android.serialport.api这个包下。下面要做的就是把它转成对应的h文件。

在android studio中集成javah, ndk-build进行JNI开发

刚才添加的External Tools发挥作用了,只需要右键这个Java文件,执行javah即可。

在android studio中集成javah, ndk-build进行JNI开发

接下来要做的就是把这个h文件拷到jni目录下,在这个目录再创建对应的实现文件C或者C++即可。

三、配置Android.mk和Application.mk文件

这两个配置文件,定义了输出so前的一些准备工作。Application.mk可以定义得很简单,如下:

APP_ABI := armeabi armeabi-v7a x86

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzppg.html