NDK入门(一)

来源:互联网 发布:mac压缩软件 编辑:程序博客网 时间:2024/05/17 04:15

为什么需要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 名称一致,否则将找不到库。

最终使用


到此结束。

原创粉丝点击