- Android Studio 工程的 Project 预览方式设置为 Project,好总览工程的目录结构。
- 在工程里的app/src目录下添加cpp目录。
- cpp目录里添加实现jni桥接函数的文件 main.cpp 。 (cpp文件名可自定)
- 在app目录下添加 CMakeLists.txt 文件。
- CMakeLists.txt 文件写入内容模板如下:
cmake_minimum_required(VERSION 3.18.1)
project(AndroidCMakeExample) # AndroidCMakeExample 为安卓工程名,可自定义
set(CMAKE_CXX_STANDARD 20)
add_library(
native-lib # native-lib 为库名,可自定义
SHARED
src/cpp/main.cpp
)
target_link_libraries(native-lib) # native-lib 为库名,可自定义
- 在 app 目录下的 build.gradle 添加如下内容
android {
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
# 此处是原来的内容
}
- 编写用于JNI桥接的类 JniNative (可自定义名字),填写内容如下
package com.example.androidcmakeexample; // 包名,写你自己的
public class JniNative {
static {
System.loadLibrary("native-lib"); // native-lib 为库名,由 CMakeLists.txt 定义
}
public static native String JNIString();
}
- 在 main.cpp 里添加实现如下,桥接函数名可以通过渐入关键字自动补齐,比如键入JniNative
#include <jni.h>
extern "C" {
JNIEXPORT jstring
Java_com_example_androidcmakeexample_JniNative_JNIString(JNIEnv *env, jclass clazz) {
return env->NewStringUTF("String from JNI.");
}
} // extern "C"
- 在MainActivity 的 OnCreate 键入测试语句:
android.util.Log.v("jni-test", JniNative.JNIString());
- 编译运行即可。