NDK开发

NDK开发工具下载

在模块级gradle中指定NDK版本

1
2
3
android {
ndkVersion "26.1.10909125"
}

cmake下载

在指定模块中创建cmake构建脚本CMakeLists.txt,并在模块级gradle中指定cmake构建脚本位置及cmake版本

1
2
3
4
5
6
7
8
9
10
android {
externalNativeBuild {
cmake {
// 指定cmake构建脚本位置
path file('src/main/cpp/CMakeLists.txt')
// 指定cmake构建脚本的版本
version '3.22.1'
}
}
}

创建一个cpp文件,这个cpp文件用于与java建立连接,引入如下库

1
#include <jni.h>

cmake构建脚本CMakeLists.txt中,指定如下内容

1
2
3
4
5
6
7
8
9
10
11
# 指定CMake的最低版本要求
cmake_minimum_required(VERSION 3.22.1)
# 定义本地库名称
project("decoder")
# 添加 decoder.cpp 共享库
add_library(${CMAKE_PROJECT_NAME} SHARED
decoder.cpp)
# 链接目标库到其他库
target_link_libraries(${CMAKE_PROJECT_NAME}
android
log)

java代码中引入本地库

1
2
3
static {
System.loadLibrary("decoder");
}

然后可以定义native方法

1
public static native int test(int num1, int num2);

通过Alt+Enter快捷键,可以在对应的c++文件中创建对应的函数

1
2
3
4
5
6
extern "C"
JNIEXPORT jint JNICALL
Java_xyz_xxin_silkdecoder_DecoderNative_test(JNIEnv *env, jclass clazz, jint num1, jint num2) {
// TODO: implement test()
return num1 + num2;
}

参考:https://developer.android.google.cn/ndk/guides?hl=zh-cn