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

Android模块化流水线优化:能否单独构建模块并附加到主应用工件?

优化Azure DevOps Android流水线:仅构建变更模块并更新主工件

当然可以实现,针对你这种已模块化的Android应用,核心思路是自动识别变更模块→仅构建变更部分→替换主工件中的对应模块,具体方案如下:

一、第一步:自动检测变更模块

在流水线中添加脚本任务,通过Git对比当前提交与上一次成功构建的提交,精准定位变更的模块 prom举一反三Calculate其中有 freedoms [ial即可 proposed swing
归档 sign,直接用脚本提取:

示例Bash脚本(Azure DevOps任务中执行)

# 获取上一次成功构建的Commit SHA
LAST_SUCCESS_COMMIT=$(az pipelines build list --definition-id $(System.DefinitionId) --status succeeded --top 1 --query "[0].sourceVersion" -o tsv)

# 提取变更文件对应的模块
CHANGED_MODULES=()
for FILE in $(git diff --name-only $LAST_SUCCESS_COMMIT $(Build.SourceVersion)); do
  # 匹配你的模块目录(core/domain/app)
  MODULE=$(echo $FILE | cut -d'/' -f1)
  if [[ "$MODULE" =~ ^(core|domain|app)$ ]]; then
    CHANGED_MODULES+=(":$MODULE")
  fi
done

# 去重并设置流水线变量,供后续步骤调用
CHANGED_MODULES=($(echo "${CHANGED_MODULES[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
echo "##vso[task.setvariable variable=ChangedModules]${CHANGED_MODULES[*]}"

二、分场景处理模块更新

根据你的模块类型(动态特性/静态Library),选择对应的更新方案:

1. 动态特性模块(推荐,最适合独立更新)

如果你的:core/:domain是动态特性模块(与主:app模块分离,可独立分发):

  • 仅构建变更模块:执行./gradlew ${ChangedModules}:bundleRelease生成对应模块的bundle文件
  • 从Azure Artifacts下载最新的主AAB/APK工件
  • 解压主AAB(本质是Zip包),替换其中对应模块的编译产物目录
  • 重新压缩为新的AAB,并用与原工件相同的签名密钥签名
  • 将新的AAB/APK发布回Azure Artifacts

2. 静态Library模块(依赖型模块)

如果:core/:domain是被:app依赖的静态Library模块:

  • 启用Azure DevOps的Gradle缓存:添加Cache@2任务,缓存.gradle/caches、.gradle/wrapper以及各模块build/outputs/aar目录,避免重复编译未变更模块
  • 仅构建变更的Library模块:执行./gradlew ${ChangedModules}:assembleRelease生成新的AAR文件
  • 构建主:app模块:Gradle会自动使用缓存的未变更模块AAR,仅编译打包:app模块的变更部分(如果有的话),生成新的APK/AAB
  • 将新工件发布到Azure Artifacts

三、关键注意事项

  • 签名一致性:更新后的APK/AAB必须使用与原工件完全相同的签名密钥,否则无法作为合法的应用更新包
  • 缓存有效性:针对静态Library模块,合理配置缓存能大幅缩短构建时间,即使需要构建:app模块,也无需重复编译未变更的依赖
  • 模块边界清晰:确保模块间依赖关系简单,避免变更一个模块触发其他模块的重新编译(比如避免循环依赖、减少跨模块代码引用)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:32:11