Android 项目引入NDK

环境
电脑:Mac
开发工具:Android 3.1.4

1. 切换 project 视图
2. app 目录下的 src 的 main 目录下,右键-> New Directory 新建一个目录 jni
3. 在 java 目录下创建一个类在添加 native 函数;
public class JNITools {
    static {
        System.loadLibrary("native-lib");
    }
    public static native int addNum(int num1, int num2);
}
4. 配置 javah 自动生成头文件
5. 项目添加 NDK 路径:File->Project Structrue ->SDK Location ->设置NDK路径
6. 在 jni 目录下新建一个 C/C++ Source 文件 NDKLib.cpp
7. 在项目的 Module 的根目录创建一个 CMakeLists.txt 文件并添加
cmake_minimum_required(VERSION 3.10.2)

add_library(native-lib SHARED src/main/jni/NDKLib.cpp )
8.把 CMake 配置到 gradle 中

第一种方式:右键 CMakeLists.txt

image.png

第二种:直接复制到对应 module 中

    externalNativeBuild {
        cmake {
            path 'CMakeLists.txt'
        }
    }
9.在 jni 目录中的 NDKLib.cpp实现头文件的函数(引用头文件并实现函数)

其实就是把 java 类生成的 .h 文件里的函数拷贝过来,稍微改一下参数

#include <jni.h>
#include "com_ws_luban_JNITools.h"
JNIEXPORT jint JNICALL Java_com_ws_luban_JNITools_addNum(JNIEnv *, jobject jobject1, jint num1, jint num2){
    return num1 +num2;
}
10. 加载库文件和调用native函数
public class JNITools {

    static {
        System.loadLibrary("native-lib");
    }

    public static native int addNum(int num1, int num2);
}

// Activity 中调用
int num = JNITools.addNum(12,1);
Toast.makeText(getApplicationContext(),""+num,Toast.LENGTH_SHORT).show();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容