1.实现test.cpp,test.cpp中包含对c++ so库要使用方法的jni定义,比如
libpclient.so有个头文件webrtctest.h内容如下:int test();
test.cpp中对接口test()的jni定义如下:
#include <jni.h> #include "webrtctest.h" // 包含需要调用的头文件 extern "C" { JNIEXPORT jint JNICALL Java_com_example_mytest_MainActivity_test(JNIEnv *env, jobject /* this */) { // 调用 libpclient.a 中的 test() 函数 return test(); } } // extern "C" 2.实现cmakelists.txt,我实现的cmakelists.txt内容如下:
cmake_minimum_required(VERSION 3.18.1) # 设置 C++ 标准为 C++20 set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 添加你的静态库目录 set(LIBS_DIR ${CMAKE_SOURCE_DIR}/jniLibs/arm64-v8a) set(INHEAD_DIR ${CMAKE_SOURCE_DIR}/jniLibs) add_definitions( -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -DANDROID -DHAVE_SYS_UIO_H -DANDROID_NDK_VERSION_ROLL=r25c_1 -DCR_CL