1.cpp文件夹用于编写c/c++代码 2.CMakeLists.txt是CMake脚本配置文件 3.新建 C/C++ 源代码文件,要添加到 CMakeLists.txt 文件中 (1)add_library( # Sets the name of the library. (****.cpp) # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/cpp/native-lib.cpp ) (2)target_link_libraries( # Specifies the target library. (****.cpp) # Links the target library to the log library # included in the NDK. ${log-lib} ) 4. 要在哪个类运用 JNI ,就得加载相应的动态库 static { System.loadLibrary("native-lib"); } 5.快速生成代码:Alt + Enter 6.引入第三方 .so文件,要添加到 CMakeLists.txt 文件中 新建资源文件夹 jniLibs # TODO 添加第三方库 # TODO add_library(libavcodec-57 # TODO 原先生成的.so文件在编译后会自动添加上前缀lib和后缀.so, # TODO 在定义库的名字时,不要加前缀lib和后缀 .so, # TODO 不然会报错:java.lang.UnsatisfiedLinkError: Couldn't load xxx : findLibrary returned null add_library(avcodec-57 # TODO STATIC表示静态的.a的库,SHARED表示.so的库 SHARED IMPORTED) set_target_properties(avcodec-57 PROPERTIES IMPORTED_LOCATION # TODO ${CMAKE_SOURCE_DIR}:表示 CMakeLists.txt的当前文件夹路径 # TODO ${ANDROID_ABI}:编译时会自动根据 CPU架构去选择相应的库 # TODO ABI文件夹上面不要再分层,直接就 jniLibs/${ANDROID_ABI}/ # TODO ${CMAKE_SOURCE_DIR}/src/main/jniLibs/ffmpeg/${ANDROID_ABI}/libavcodec-57.so ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libavcodec-57.so)
android studio 配置jni操作
最新推荐文章于 2024-07-17 12:01:47 发布