文章 16
浏览 11957
JNI for CMake的正确用法(网上教程都太坑了)

JNI for CMake的正确用法(网上教程都太坑了)

记一下JNI的搭建

第一步 安装NDK CMake

Setting中的Appearance&Behavior/System Settings/Android SDK/SDK Tools中安装NDK``CMake

第二步 配置文件

切换到Project视图

main目录下新建jni文件

新建main.cpp文件

app目录下新建CMakeLists.txt文件

 1
 2# 指定cmake最小版本
 3
 4cmake_minimum_required(VERSION 3.4.1)
 5add_library(
 6# 库的名称
 7kitJNI
 8 9# 将库设置成共享库
10SHARED
1112# 设置源码的路径
13src/main/jni/main.cpp)
14
15# 可以指定第二个
16
17add_library(
18# 库的名称
19kitJNI_2
2021# 将库设置成共享库
22SHARED
2324# 设置源码的路径
25src/main/jni/main2.cpp)
26find_library(
27#这里是使用NDK自带的库
28log-lib
29log
30)
3132target_link_libraries(
33kitJNI
34${log-lib}
35)
36target_link_libraries(
37kitJNI_2
38${log-lib}
39)
40

右键app文件夹 选择 Link C++ ... ,选择CMakeLists.txt

在项目模块的build.gradle

 1
 2android{
 3...
 4//这个就是可以直接添加ndk
 5ndkVersion '21.1.6352462'
 6defaultConfig {
 7externalNativeBuild {
 8cmake {
 9//配置
10cppFlags '-std=c++14'
11}
12}
13}
14externalNativeBuild {
15cmake {
16path file('CMakeLists.txt')
17}
18}
19}
2021
第三步 开始操作

新建一个KitDataProcess

 1
 2public class KitDataProcess {
 3//动态加载
 4static {
 5System.loadLibrary("kitJNI");
 6}
 7//这里是可以alt+回车生成的
 8public static native String test();
 9}
10
1
2object KitDataProcess {
3init {
4System.loadLibrary("kitJNI")
5}
6external fun text():String?
7}
8

这里相对应的cpp类中

 1
 2#include <jni.h>
 3#include <string>
 4 5extern "C"
 6JNIEXPORT jstring JNICALL
 7//这里是类的名字,
 8Java_com_faceDemo_dataProcess_KitDataProcess_test(JNIEnv *env, jclass clazz) {
 9std::string hello = "Hello from TT";
10return env->NewStringUTF(hello.c_str());
11}
12

在cpp文件中打一个

1
2void Java_(){}
3

然后再在之前的实体类中使用alt+回车生成

测试代码

1


标题:JNI for CMake的正确用法(网上教程都太坑了)
作者:kuohai
地址:https://udday.cn/articles/2021/06/08/1623131523840.html

充实的一天

取消