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

如何在带NDK C++支持的Android项目中配置Curl库完成编译

解决步骤

1. 整理文件存放路径

  • 头文件放置:将libcurl对应的include文件夹(内部需包含curl/curl.h的目录结构)放到app/src/main/cpp目录下,最终完整路径为app/src/main/cpp/include/curl/curl.h
  • 动态库存放:在app/src/main目录下新建jniLibs文件夹,再在jniLibs下新建arm64-v8a子文件夹,将所有arm64架构的.so文件(含libcurl.so及其依赖库)全部放入app/src/main/jniLibs/arm64-v8a目录中

2. 修改CMakeLists.txt配置(app模块cpp目录下的CMake配置文件)

你需要在原有配置基础上新增以下内容:

2.1 配置头文件搜索路径

添加这行代码让编译器能找到curl头文件:

include_directories(${CMAKE_SOURCE_DIR}/include)

${CMAKE_SOURCE_DIR}指代当前CMakeLists.txt所在的目录,默认就是app/src/main/cpp

2.2 导入预编译的libcurl库

# 声明libcurl为预编译共享库
add_library( libcurl
        SHARED
        IMPORTED )
# 指定libcurl.so的实际存放路径
set_target_properties( libcurl
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/../jniLibs/arm64-v8a/libcurl.so )

如果有其他依赖的.so库,你需要按照上面的格式,为每个库都新增对应的add_library和set_target_properties配置

2.3 关联依赖库

找到target_link_libraries配置段,将libcurl添加到依赖列表中,示例如下:

target_link_libraries(
        # 此处替换为你自己的原生库名称,默认生成的示例项目为native-lib
        native-lib
        # 新增libcurl依赖
        libcurl
        # 原有系统依赖库保持不变即可
        android
        log)

3. 修改app模块build.gradle配置

找到android > defaultConfig块,新增ndk架构过滤配置,避免编译其他架构时找不到库报错:

ndk {
    abiFilters 'arm64-v8a'
}

4. 验证生效

同步项目后执行Clean -> Rebuild,#include <curl/curl.h>的找不到报错就会消失,项目可正常编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:03