jni_libs: ["libDesensitisejni"],转为CMakeLists
时间: 2023-07-19 15:34:26 浏览: 46
将这个jni_libs: ["libDesensitisejni"]转为CMakeLists,你可以在CMakeLists.txt文件中添加以下内容:
```
add_library(libDesensitisejni SHARED IMPORTED)
set_target_properties(libDesensitisejni PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/jniLibs/${ANDROID_ABI}/libDesensitisejni.so)
```
这样就定义了一个名为libDesensitisejni的库,并将其导入到你的CMake项目中。你需要将libDesensitisejni.so文件放置在jniLibs/${ANDROID_ABI}/目录下,并且需要在CMakeLists.txt中指定正确的${ANDROID_ABI}值,才能正确地导入这个库。
相关问题
jni_libs: ["libgljni"]用CMakeLists怎么写
在 CMakeLists.txt 中,可以通过以下方式来指定 JNI 库文件的链接选项和路径:
```cmake
# 指定 JNI 库文件的链接选项和路径
add_library(gljni SHARED IMPORTED)
set_target_properties(gljni PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/jniLibs/${ANDROID_ABI}/libgljni.so)
# 添加目标库
add_library(mylib SHARED mylib.cpp)
# 链接 JNI 库文件和目标库
target_link_libraries(mylib gljni)
```
其中,`add_library()` 函数用来添加目标库,`target_link_libraries()` 函数用来链接目标库和其他依赖库文件。在这个例子中,我们先使用 `add_library()` 函数添加了一个名为 `gljni` 的库,然后通过设置 `IMPORTED_LOCATION` 属性来指定 JNI 库文件的路径。接着,我们添加了一个名为 `mylib` 的目标库,并使用 `target_link_libraries()` 函数将 `gljni` 库链接到 `mylib` 库中,从而使 `mylib` 库能够调用 `gljni` 库中的函数。
需要注意的是,这里假设 JNI 库文件 `libgljni.so` 已经被编译好并存放在 `jniLibs/${ANDROID_ABI}/` 目录下。如果需要编译 JNI 库文件,可以使用 `add_library()` 函数和 `set_target_properties()` 函数来实现。
android_app { name: "DesensitiseJNI", srcs: ["**/*.java"], sdk_version: "current", jni_libs: ["libDesensitisejni"], }转为CMakeList
根据给出的 Android.mk 文件,可以转换为以下 CMakeLists.txt 文件:
```
cmake_minimum_required(VERSION 3.4.1)
add_library(DesensitiseJNI SHARED
src/main/java/com/example/DesensitiseJNI/DesensitiseJNI.java)
find_library(log-lib log)
target_link_libraries(DesensitiseJNI
${log-lib}
Desensitisejni)
```
需要注意的几点:
- `cmake_minimum_required(VERSION 3.4.1)` 表示需要使用 CMake 的版本,可以根据实际情况进行修改。
- `add_library` 函数用于添加库文件,其中 `SHARED` 表示动态库。
- `srcs` 中的 `.java` 文件需要被编译成 `.class` 文件,并打包成 `.jar` 文件,然后再使用 `add_library` 函数将其添加到库中。
- `jni_libs` 中的库文件需要在 `target_link_libraries` 函数中进行链接。
- `find_library(log-lib log)` 表示查找 `log` 库,可以根据实际情况进行修改。