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 
#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();

你可能感兴趣的:(Android 项目引入NDK)