android_app { name: "DesensitiseJNI", srcs: ["**/*.java"], sdk_version: "current", jni_libs: ["libDesensitisejni"], }什么意思
时间: 2023-07-21 07:57:47 浏览: 138
这是一个 Android 应用程序的构建文件,通常命名为 `Android.mk`。该文件定义了应用程序的名称、源代码文件和依赖项等信息,以便编译器将其编译为可安装的 Android 应用程序。
具体来说,该构建文件中的 `android_app` 是一个 Android 应用程序模块的声明,其中包含了该应用程序的名称、源代码文件路径和依赖项等信息。
在这个例子中,该应用程序的名称是 "DesensitiseJNI",它的源代码文件是所有子目录下的所有 `.java` 文件。该应用程序的 `sdk_version` 属性指定了它所需要的 Android SDK 版本,`jni_libs` 属性指定了该应用程序需要链接的 JNI 库名称,这些库通常是由 C/C++ 语言编写的,并在应用程序中使用 Java Native Interface (JNI) 进行调用。
该构建文件通常由 Android 开发工具链中的 `ndk-build` 或 `mm` 命令使用,它们会根据该构建文件中的信息将源代码编译为可执行的 Android 应用程序,并生成对应的 APK 文件以便进行安装和测试。
相关问题
android_app { name: "DesensitiseJNI", srcs: ["**/*.java"], sdk_version: "current", jni_libs: ["/home/scm/zw/disk2/zw/work/tianweixing/code/lagvm/LINUX/android/frameworks/native/opengl/tests/gl_jni_zz/libs/libDesensitisejni"], }有错误吗
这段代码看起来没有明显的错误,但是需要注意以下几点:
1. jni_libs 中指定的路径是否正确,以及路径中是否包含了 JNI 库的名称。在这个例子中,路径中包含了 JNI 库的名称,因此应该是正确的。
2. 如果 JNI 库是在其他项目中生成的,则需要将其包含到当前项目中。可以使用 LOCAL_SHARED_LIBRARIES 或 LOCAL_STATIC_LIBRARIES 指令进行包含。
3. 如果 JNI 库是在当前项目中生成的,则需要确保它已经被正确地编译和链接。可以使用 LOCAL_C_INCLUDES 和 LOCAL_LDLIBS 指令分别指定头文件路径和链接库。
4. sdk_version 设置为 "current" 可能会导致一些兼容性问题,建议指定具体的 SDK 版本号。
综上所述,如果没有其他的问题,这段代码应该可以正常工作。
android_app { name: "GLJNI", srcs: ["**/*.java"], sdk_version: "current", jni_libs: ["libgljni"], }转为CMakeLists
将 Android.mk 转换为 CMakeLists.txt 可以按照以下步骤进行:
1. 创建 CMakeLists.txt 文件并设置项目名称
```
cmake_minimum_required(VERSION 3.4.1)
project(GLJNI)
```
2. 添加源文件
```
file(GLOB_RECURSE SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/*.c")
add_library(gljni SHARED ${SRC_FILES})
```
3. 添加依赖库
```
find_library(log-lib log)
target_link_libraries(gljni ${log-lib})
```
其中,log-lib 是一个 Android 系统提供的库,用于输出日志。如果需要使用其他库,则需要按照类似的方式进行添加。
4. 设置编译选项
```
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
```
这里设置了编译选项,包括使用 C++11 标准和开启编译警告。
最后,生成的 CMakeLists.txt 可能需要根据具体的项目进行调整,以满足项目的需求。
阅读全文