前一篇简单介绍了Android Studio环境下NDK的配置,本篇将通过一个简单的例子,介绍Android Studio中C/C++代码的编写与编译。
下面我们通过一个例子,在native层实现字符串的拼接。
一、添加native方法
首先我们新建一个类,例如取名叫"JniUtil",然后新建一个native方法,用来实现字符串拼接,如下图:
二、生成头文件
1. 生成class文件
Build一下工程,Build成功后,会在app\build\intermediates\classes\debug目录下会自动生成所有类的class文件,如下图:
2. 在Terminal中切换到debug目录
在Android Studio上找到Terminal标签页,然后通过命令切换到app\build\intermediates\classes\debug目录。
3. 生成头文件
通过"javah -jni"命令,生成头文件,我们要生成com\samonxu\jnitest目录下的JniUtil.class文件对应的头文件,命令如下图所示:
我们就会发现,debug目录下多了一个.h文件。
若查看这个.h文件的内容,你会发现我们在JniUtil类中定义的native方法对应的C/C++函数,在头文件中已经声明好了。
然后我们将这个.h文件复制到我们的jni目录下。
记得在Terminal中退出到主目录,否则Rebuild工程的时候,无法执行clean操作。
三、实现头文件中声明的函数
在jni目录下,新建一个.c文件,例如取名叫"jnitest.c";
编写代码,实现函数Java_com_samonxu_jnitest_JniUtil_append()
四、调用native方法
首先在JniUtil类中添加一段static的代码,加载我们的.so库。
然后创建个Activity,调用append()方法,将"abc"和"123"的拼接结果显示到一个TextView上。
五、编译运行程序
编译并运行程序,结果如下图:
至此,一个简单的JNI程序就完成了。