最近博主开始学习如何使用NDK,在此进行一下总结。
博主的IDE为Android Studio 2.3.1,接下来博主将演示如何在现有的项目上支持NDK。
下载NDK
首先,使用SDK Manager下载SDK Tools调试工具LLDB、编译工具CMake以及NDK:
NDK也可以去官网进行下载:NDK下载地址
编写java文件
首先,我们编写一个Native工具类,里面定义了一个native方法获取字符串:
1 | public class NativeUtils { |
然后在我们的主界面打印这个字符串:
1 | public class MainActivity extends AppCompatActivity { |
接着我们在app根目录下创建一个jni文件夹:
创建完成后,我们多了一个cpp的文件夹(实际上是jni文件夹,Android视图进行了简化):
然后我们Make Project,使其Java代码生成.class文件,并打开终端:
定位到生成.class文件的目录下:
1 | cd app\build\intermediates\classes\debug |
使用java命令的jni框架生成.h文件:
1 | javah -jni 完整包名.类名 |
然后使用project 视图找到我们的.h文件:
把生成的.h文件剪贴到我们的jni文件夹中新建的include目录下:
链接到Gradle
首先我们需要在工程的Project Structure 下设置NDK 的目录:
在local.properties文件中添加ndk.dir属性亦可达到同样效果:
然后我们在cpp文件夹下创建空白的NativeUtils.cpp文件
接着打开Project视图,在工程的根目录下新建CMakeLists.txt 文件:
1 | # Sets the minimum version of CMake required to build your native library. |
在Android视图中,选择我们的cpp文件夹,选择链接到Gradle:
选择CMake编译系统,并选择我们的CMakeLists.txt:
我们也可以通过在app模块的build.gradle的android的属性添加一下代码达到相同的效果:
1 | externalNativeBuild { |
进行Gradle sync 同步过后,我们可以开始进行cpp代码编写了。
编写cpp文件
首先我们编写NativeUtils.cpp 文件,实现具体的Native方法:
1 |
|
然后我们在NativeUtils.java 文件中添加如下代码载入动态链接库:
1 | static { |
编译运行的效果如下:
更多关于NDK的信息请参考官方的链接:https://developer.android.com/ndk/index.html#Revisions