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

Android Studio配置ndk-build构建原生库报错问题咨询

从手动ndk-build切换到Android Studio直接构建C/C++代码的配置指南

首先,你已经迈出了关键一步——在Module级build.gradle中配置了externalNativeBuild关联现有Android.mk,接下来我们把细节补全,确保构建流程顺畅:

1. 完善Module级build.gradle配置

你的现有配置已经指向了Android.mk,建议补充指定NDK版本,避免环境差异导致的编译问题,完整配置示例如下:

android {
    // 其他配置(如compileSdk、defaultConfig等)...
    ndkVersion "25.2.9519653" // 替换为你项目兼容的NDK版本

    externalNativeBuild {
        ndkBuild {
            path file("src/main/jni/Android.mk")
        }
    }
}

2. 确认Application.mk的自动关联

放在src/main/jni目录下的Application.mk会被Android Studio自动识别并使用,不需要额外配置。如果你的Application.mk里定义了ABI过滤、NDK特性(比如APP_ABI := armeabi-v7a arm64-v8a),这些规则会正常应用到构建流程中。

3. 验证Android.mk对子目录的引用

由于你的jni目录包含jpeg8d-master这类子目录,要确保主Android.mk正确引入了这些子目录的代码或模块配置:

  • 如果子目录下有独立的Android.mk,可以在主Android.mk中添加:
    include $(call all-subdir-makefiles)
    
  • 也可以手动指定子目录的Android.mk路径:
    include $(LOCAL_PATH)/jpeg8d-master/Android.mk
    

这样Android Studio构建时才能编译所有子目录的C/C++代码。

4. 执行构建(无需手动ndk-build)

完成配置后,你可以完全抛弃手动执行脚本的方式:

  • 在Android Studio中点击顶部菜单栏的Build > Make Project,或工具栏的构建按钮
  • 也可以用Gradle命令行执行:
    ./gradlew assembleDebug # 构建debug版本
    ./gradlew assembleRelease # 构建release版本
    

生成的.so库会自动输出到build/intermediates/ndkBuild/对应ABI目录,最终打包进APK。

常见问题排查

  • 编译路径错误:检查Android.mk中LOCAL_PATH的定义,确保相对路径基于src/main/jni目录
  • NDK版本兼容问题:确认build.gradle指定的ndkVersion与Application.mk依赖的NDK特性匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:41:40