Android开发之向您的项目添加C/C++代码
-
我们为什么要想Android项目中添加C/C++代码?
众所周知我们使用Java或Koltin语言开发Android项目简单,快捷,那么在什么情况下使用C/C++代码呢?
复用之前的C/C++代码。 在一个有传承的项目中留下来一些经过验证、高效、正确的代码库
C/C++代码做一些图像、算法或者复杂的逻辑时效率会提高很多。
如果在一些内存受限的平台开发,使用C++会在内存利用率上提高很多。因为java使用虚拟机来管理内存。C/C++需要认为去控制。
基于以上原因,我们需要在项目中使用C/C++代码,并且使用jni作为Java和C/C++的代码交互桥梁。
-
我们如何在代码中添加C/C++代码呢?
Goggle官网这篇https://developer.android.google.cn/studio/projects/add-native-code文章讲述了下载、安装必须的开发工具,以及向Android项目添加C/C++代码。本文和这篇文章有些许冲突,但是本文会更快更简单的带领新手进入Java与C/C++代码交互的世界。
-
开发环境
OS: Windows 10
Development Tool: Android Studio 3.0
JDK : jdk1.8
-
下面进入正题:
-
首先我们在Android Studio中创建一个的Module(该Module我已上传至Github,感兴趣的童鞋请前往下载https://github.com/powerzhang/NativeInterface),如下图:
-
在
src/main目录下创建一个cpp目录,然后在对应路径下创建一个java代码与原生代码交互的接口文件NativeInterface.java,如下图: -
在Android Studio中打开Terminal,使用javah 生成对应的.h文件,首先我们进入java目录下,然后使用javah命令,参数为包名+类名:命令如下:
C\Users\qustzj\Downloads\Application\app\src\main\java>javah com.example.qustzj.application.Natlvelnterface.然后在目录下可以找到一个对应的.h文件。我们将该.h文件移到cpp目录下,并修改名字为Interface.h,如下图: 创建.h文件对应的cpp文件,并实现其对应的方法。由于在C++层需要用到日志输出结果,我们创建一个LogUtils.h文件用于辅助日志打印。
-
我们需要修改module的build.gradle文件,以及在app/目录下添加一个CMakeLists.txt文件。如下图:
如果对CMake语法不熟悉的童鞋,可以参考下面链接学习https://github.com/carl-wang-cn/demo/tree/master/cmake以及其他资料另行学习。
-
最后,我们进行测试,我们使用XiaoMi 6进行测试.
我们在MainActivity进行调用,如下图:测试结果如下:
到这里就结束了,下一篇将是在C++层使用TinyXML2对xml文件的解析.
以上所有的代码都托关于github.本人水平有限,所有的代码都会经过测试,然后上传到github.文中有不对的地方,请提出宝贵有意见.
-