android studio现在已经很好的支持了NDK开发,使用android studio进行NDK的开发变得很方便。本文讲的NDK开发时基于CMake编译的NDK开发,有关ndk-build编译的方法,我找时间会整理出来,因为我另一个项目就是用的ndk-build…..
在启动NDK开发时,通常是这样两种情况:一、全新的android项目,需要支持NDK功能开发;已有的项目新增NDK功能开发。
一、
第一种情况,其实比较简单。android studio在创建新项目时,直接选择support c++就可以了,android studio会自动做好NDK开发环境的配置。
android studio 配置好了CMake文件,gradle配置信息等。这样直接在对应的cpp文件中进行jni代码开发就可以了。
二
主要记录一下第二种情况。多数情况下,我们会遇到在已有的项目中增加NDK功能,即编写jni代码,这个时候我们就需要在已有的项目中,增加NDK的编译环境。主要步骤如下:
1. 编写相应的类以及native方法:
public class RKECG {
static {
System.loadLibrary("rkecg");
}
public static native int getHR(short[] data);
}
2 . 使用Terminal,cd到java目录,执行javah 包名.类名命令,生成对应的.h头文件:
注:生成的.h文件在java根目录中。
3 . 在main目录下,新建cpp目录,并新建一个*.cpp(文件名任意)文件,把第2步生成的.h文件中的内容复制到该cpp文件中(之前的.h文件就可以删除了)
4 . 在app目录下添加并编写CMakeLists.txt文件,也可以直接从其他C++ support的android项目中复制个CMakeLists.txt文件(我就是这么干的..-_-!),修改里边的内容就可以了:
更多关于CMake文件的参数说明,请各位看官自定度娘吧,很多这样的资源。
5 . 配置app的build.gradle文件
6 . 最后,配置gradle.properties文件:文件中增加这样一行代码(其实是注释掉的,去掉#注释就可以了)
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
sync一下就可以了~.
这样就配置完成了。~ _ ~
等等等~~! 并不能运行,报错了!
cannot resolve corresponding jni function
之前新增的native方法那里报了上面这个错误! 其实这是android studio没有更新对NDK的支持导致的。按照如下的方法解决:
1 . 打开settings/plugins,搜索ndk,取消ndk支持,然后重启android studio
2 . 重启之后,就发现上面那个错误没有了。但是我们是需要支持NDK的,怎么能把这个取消呢,所以我们再重新把这个ndk支持勾打上,再重启一下android studio。 此时,上面那个错误就完美的木有了~~
然后我们就可以美丽的编写jni代码了,还有代码提示有木有!~
最后运行一下我们的app,测试一下jni代码是不是便宜成功了:
结果出来了,有木有!
最后如果你想看下你的.so文件有没有被打包到app中,可以打包app,查看apk中的lib目录看.so文件:
有了,完美!~
开始愉快的编写jni代码吧~~