赞
踩
1. NDK 和 JNI 的概念
JNI 的全称是 Java native interface,Java 本地接口,实现 Java 和 C/C++ 的互相调用
NDK 的全称是 Native development kit 本地开发工具集,方便JNI的开发
2. 使用 JNI 的好处
1. 实现 C/C++ 代码的复用:因为 C/C++ 出现的比Java早
2. C/C++ 的执行效率比Java快,性能较好
3. 。。。
3.NDK 开发流程
传统的ndk-build流程
①下载安装NDK开发包
勾选 Android NDK 然后点击 ok 下载,文件夹就是下图的 ndk-bundle,这种在 AS 里下载不用翻墙,下面提供一个链接,NDK开发官网[注意 需要翻墙才能进 ],里面也可以进行NDK 压缩包下载,一般也是解压到 Android SDK 下
②.ndk-bundle路径添加到环境变量 path
③.创建 project,在 local.properties 中添加 ndk-bundle文件夹路径(一般不需要自己去添加)在 gradle.properties 文件最后中添加
#兼容老的ndk
android.useDeprecatedNdk=true
④.在 main/java/包名 目录下创建调用 native方法的类 JNI
命令行进入到 java 目录下,使用命令: javah 全包名/JNI,会在 java 目录下生成头文件。生成头文件还有其他方法,可参考给的参考链接
⑤.在 main 目录下创建一个 jni 目录,把 4 中生成的头文件移动到这个目录中,并在此目录下创建 C/C++ 源文件
⑥.在 app 下的 build.gradle中配置如下
然后 Builde-> Rebuild project,生成一个 so 文件
⑦.在步骤 4 中创建的 JNI 类中加载 so 库
⑧.调用native方法
使用CMake外部构建
①与传统方法比较,需要在 sdk tools 中勾选 CMake 下载,网上说只支持 AS 2.2 以上的版本,而且如果是32位系统可能在 SDK tools 下找不到 CMake,这时可以去找一个 CMake文件放到自己的SDK目录下。具体的区别可以创建AS自带的demo查看,如下图去创建
然后一直 next 至 finish。
具体可参考它:
CMakeList.txt文件的说明
JNI知识
std::string用法总结
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。