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

Azure DevOps流水线gradle构建NDK无arm-linux-androideabi工具链如何解决

解决方案

问题根源

你当前使用的AGP(Android Gradle Plugin)3.5.3版本最高仅兼容NDK r21及更早版本,微软Hosted windows-latest代理默认搭载的高版本NDK(r22及以上)已经移除了传统arm-linux-androideabi对应ABI的toolchain目录,因此触发报错。

方案1:通过Azure DevOps YAML配置指定NDK路径(优先推荐)

windows-latest代理预安装了NDK r21e版本,完全兼容AGP3.5.3,直接通过YAML任务设置全局环境变量即可:

# 配置NDK环境变量
- powershell: |
    echo "##vso[task.setvariable variable=ANDROID_NDK_HOME]C:\Microsoft\AndroidNDK\android-ndk-r21e"
    echo "##vso[task.setvariable variable=NDK_ROOT]C:\Microsoft\AndroidNDK\android-ndk-r21e"
  displayName: Set NDK path compatible with AGP 3.5.3

# 可选:将NDK路径写入项目local.properties
- powershell: |
    Add-Content -Path ./local.properties -Value "ndk.dir=C:\Microsoft\AndroidNDK\android-ndk-r21e"
  displayName: Write NDK path to local.properties

配置完成后再执行gradle构建任务即可正常运行。

方案2:项目build.gradle固定NDK版本

无需修改流水线配置,直接在项目主模块的build.gradle的android块中指定兼容的NDK版本:

android {
    compileSdkVersion 你的编译版本 // 保留原有配置不变
    ndkVersion '21.4.7075529' // 新增该行,对应NDK r21e的版本号
    // 其余原有配置保持不变
}

方案3:临时禁用strip调试符号任务

如果你的构建场景不需要剥离调试符号,可以直接禁用报错任务,无需调整NDK配置:
在项目根目录的build.gradle中添加以下配置:

tasks.whenTaskAdded { task ->
    if (task.name == ':ucrop:stripDebugDebugSymbols' || task.name.contains('stripReleaseDebugSymbols')) {
        task.enabled = false
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:36:03