Android 项目引入NDK
2019-08-19 本文已影响0人
奇梦人
环境
电脑: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();