You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按官方文档为Android添加CMake测试项目时遇库未找到错误

问题分析与解决方案

问题背景

给Android应用主CMake配置引入测试项目(按官方文档操作),编译时出现链接错误,移除引入代码后构建正常。错误提示链接器找不到libatomic、libunwind以及libclang_rt.builtins-x86_64-android.a,且路径指向Linux目录(C:\PROGRA~1\LLVM\lib\clang\16\lib\linux\),与Android构建环境冲突。

核心原因

测试项目的CMake配置未正确继承主项目的Android工具链环境,导致链接器错误地去Linux库路径查找Android专属库;或者自定义的构建目录未被Android Studio的CMake工具链正确初始化,缺失必要的环境变量。

解决方案

1. 修正测试项目的CMakeLists.txt

打开../../test/cpp/CMakeLists.txt,检查并调整以下内容:

  • 移除硬编码的Linux相关库路径或链接指令(比如手动指定-L/usr/lib这类配置)
  • 避免覆盖CMAKE_SYSTEM_NAME、CMAKE_ANDROID_NDK等Android关键变量
  • 若测试项目为跨平台项目,添加Android环境判断逻辑:
    if(ANDROID)
        # Android环境下的专属配置,比如链接系统日志库
        find_library(log-lib log)
        target_link_libraries(your_test_target ${log-lib})
    endif()
    

2. 调整构建目录为Android Studio默认路径

将自定义的test_build_DIR改为主项目CMake构建的子目录,确保继承工具链配置:

set(test_DIR ../../test/cpp)
# 使用主项目构建目录下的子目录,替代自定义外部路径
set(test_build_DIR ${CMAKE_CURRENT_BINARY_DIR}/test_outputs)
file(MAKE_DIRECTORY ${test_build_DIR})

add_subdirectory(
        ${test_DIR}
        ${test_build_DIR}
)

3. 检查NDK与Clang版本匹配

错误中Clang版本为16,需确保使用的NDK版本支持该Clang版本:

  • NDK r27对应Clang 16,r26对应Clang 15,r25对应Clang 14
  • 在项目根目录的local.properties中指定正确的NDK路径:
    ndk.dir=/path/to/ndk-r27
    

4. 强制传递Android工具链参数到子项目

若测试项目仍未正确识别Android环境,可在add_subdirectory前显式传递关键变量:

set(CMAKE_SYSTEM_NAME Android PARENT_SCOPE)
set(CMAKE_ANDROID_NDK ${CMAKE_ANDROID_NDK} PARENT_SCOPE)
set(CMAKE_ANDROID_ARCH_ABI ${CMAKE_ANDROID_ARCH_ABI} PARENT_SCOPE)

add_subdirectory(
        ${test_DIR}
        ${test_build_DIR}
)

验证步骤

  1. 清理项目:执行Build > Clean Project
  2. 重新构建:执行Build > Rebuild Project
  3. 若仍报错,查看测试项目的CMake日志,确认是否正确加载了Android工具链

内容的提问来源于stack exchange,提问作者John Glen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:12:05