NDK入门(一)
为什么需要ndk开发,个人理解有两点:一,安全,java程序容易通过反编译获取源码。二,效率,C++效率肯定比java高。
如何使用
前期准备工作
一,可用的android studio。
二,android-ndk-r14b-windows-x86_64 【下载地址】。解压后放到sdk根目录中,文件夹命名为ndk-bundle,为啥要这么做,启动AS的时候会检查它并直接添加到ndk.dir中,减少我们的配置工作,后面会有体现。
三,配置环境变量path,把解压好的路径添加到环境变量path中。
到此准备工作完毕!
创建项目demo
关联android studio和ndk
关联一,在建立的工程中的local.properties中添加如下配置ndk.dir=D\:\\Android\\sdk\\ndk-bundle。如果ndk目录是存放在SDK中,并命名为ndk-bundle,这个配置会自动为添加上。
关联二,在gradle.properties中配置android.useDeprecatedNdk=true 。这个主要是解决ndk提示版本低不能自动编译jni
关联工作完成,接下来代码相关
在包里面创建NDKJNI.java文件并创建一个本地方法 getNDKString()
通过javah命令获取到本地头文件
执行javah命令后你会在包下面看到 .h文件
【project查看项目模式】在mian 下面创建jni文件夹,把 .h文件转移到该文件夹里面,同时创建同名的 .c文件。
目前ndk相关代码全部写完
在该项目下的build.gradle配置生成的so名称和支持的cpu类型
生成so文件
在项目的工具类中选择Build->Rebuild Project,进行重新编译工程,然后AS会为我们生成so文件,so文件所在目录为:\app\build\intermediates\ndk\debug\lib下
ndk现在已经开发完成.
下面是如何使用ndk
加载so库
加载的so库名称必须与build.gradle中配置的moduleName 名称一致,否则将找不到库。
最终使用
到此结束。