android ndk-build log输出文件

ndk-build NDK_LOG=1 | tee c:/ndk.log


就可以把ndk-build的log保存到本地文件

### 3.1 配置 build.gradle 文件 在使用 Kotlin 开发 Android 项目并集成 CMake 构建系统时,首先需要在模块级 `build.gradle` 文件中配置 `externalNativeBuild` 块,以启用 CMake 构建流程,并指定支持的 ABI 架构。以下是一个典型的配置示例: ```gradle android { ... defaultConfig { ... externalNativeBuild { cmake { cppFlags "" abiFilters.addAll(listOf("arm64-v8a", "armeabi-v7a")) } } } externalNativeBuild { cmake { path "CMakeLists.txt" version "3.22.1" } } } ``` 该配置启用了 CMake 构建系统,并指定了 `CMakeLists.txt` 的路径,同时限制构建目标为 `arm64-v8a` 和 `armeabi-v7a` 两种 ABI 架构[^1]。 ### 3.2 创建 CMakeLists.txt 文件 在项目根目录或 `src/main/cpp` 目录下创建 `CMakeLists.txt` 文件,用于定义 C/C++ 源文件的编译规则。以下是一个简单的示例: ```cmake # 设置 CMake 最低版本要求 cmake_minimum_required(VERSION 3.22.1) # 定义项目名称 project("native-lib") # 添加 C/C++ 源文件 add_library( native-lib SHARED native-lib.cpp ) # 查找 Android NDK 提供的 log 库 find_library( log-lib log ) # 链接本地库与 log 库 target_link_libraries( native-lib ${log-lib} ) ``` 该配置文件定义了一个名为 `native-lib` 的共享库,并链接了 Android 提供的日志库 `log`。 ### 3.3 Kotlin 中调用 Native 方法 在 Kotlin 中调用 C/C++ 编写的 native 方法时,需在 Kotlin 类中声明 `external` 方法,并在类初始化时加载 native 库。例如: ```kotlin class MainActivity : AppCompatActivity() { companion object { init { System.loadLibrary("native-lib") } } external fun stringFromJNI(): String override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val tv: TextView = findViewById(R.id.sample_text) tv.text = stringFromJNI() } } ``` 上述代码中,`stringFromJNI()` 是在 native 代码中实现的函数,通过 `System.loadLibrary()` 加载对应的 `.so` 文件[^2]。 ### 3.4 引入外部动态库 如果项目依赖外部动态库(如 FFmpeg),可以通过 `add_library(... IMPORTED)` 和 `set_target_properties()` 引入已有的 `.so` 文件: ```cmake add_library(avutil SHARED IMPORTED) set_target_properties(avutil PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libavutil.so) target_link_libraries(native-lib avutil) ``` 此方式可简化多库依赖的配置,适用于引入多个 native 依赖的场景[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值