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,这个配置会自动为添加上

NDK入门(一)_第1张图片

关联二,在gradle.properties中配置android.useDeprecatedNdk=true 。这个主要是解决ndk提示版本低不能自动编译jni  

NDK入门(一)_第2张图片

关联工作完成,接下来代码相关

在包里面创建NDKJNI.java文件并创建一个本地方法 getNDKString()

NDK入门(一)_第3张图片

通过javah命令获取到本地头文件

NDK入门(一)_第4张图片

执行javah命令后你会在包下面看到 .h文件

NDK入门(一)_第5张图片


【project查看项目模式】在mian 下面创建jni文件夹,把 .h文件转移到该文件夹里面,同时创建同名的 .c文件。

NDK入门(一)_第6张图片

目前ndk相关代码全部写完

在该项目下的build.gradle配置生成的so名称和支持的cpu类型

NDK入门(一)_第7张图片


生成so文件

在项目的工具类中选择Build->Rebuild Project,进行重新编译工程,然后AS会为我们生成so文件,so文件所在目录为:\app\build\intermediates\ndk\debug\lib下

NDK入门(一)_第8张图片

ndk现在已经开发完成.


下面是如何使用ndk

加载so库

NDK入门(一)_第9张图片

加载的so库名称必须与build.gradle中配置的moduleName 名称一致,否则将找不到库。

最终使用

NDK入门(一)_第10张图片

到此结束。

你可能感兴趣的:(ndk,android,jni,高性能应用开发,移动开发,NDK)