NDK 开发

来源:互联网 发布:淘宝网商贷影响个人 编辑:程序博客网 时间:2024/05/17 10:26

基于 AS 的 NDK 开发

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 开发流程

  1. 传统的ndk-build流程
    ①下载安装NDK开发包
    勾选Android 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方法
    这里写图片描述

  2. 使用CMake外部构建
    ①与传统方法比较,需要在 sdk tools 中勾选 CMake 下载,网上说只支持 AS 2.2 以上的版本,而且如果是32位系统可能在 SDK tools 下找不到 CMake,这时可以去找一个 CMake文件放到自己的SDK目录下。具体的区别可以创建AS自带的demo查看,如下图去创建

    这里写图片描述
    然后一直 next 至 finish。
    具体可参考它:
    CMakeList.txt文件的说明
    JNI知识
    std::string用法总结

0 0