Android多渠道包批量构建自动化实现方案求助
Android多Flavor自动化构建:批量生成APK/AAB方案
一、Gradle自定义任务实现
直接在app模块的build.gradle中添加自定义任务,自动遍历所有Flavor并触发构建:
// app/build.gradle task buildAllFlavors { group = 'custom' description = '批量构建所有Flavor的Release版APK和AAB' // 收集所有Flavor名称 def flavorList = android.productFlavors.collect { it.name } // 为每个Flavor关联对应的构建任务 flavorList.each { flavor -> dependsOn "assemble${flavor.capitalize()}Release" dependsOn "bundle${flavor.capitalize()}Release" } }
执行方式:在项目根目录运行命令
./gradlew buildAllFlavors
二、Shell脚本批量执行
如果不想修改Gradle配置,可通过Shell脚本直接遍历并触发构建:
#!/bin/bash # 提取所有Release版Flavor任务名称,过滤出Flavor名 FLAVORS=$(./gradlew tasks --group "Build" | grep -E "assemble.*Release" | sed 's/assemble//g' | sed 's/Release//g') # 循环构建每个Flavor的APK和AAB for FLAVOR in $FLAVORS; do echo "开始构建Flavor: $FLAVOR" ./gradlew assemble${FLAVOR}Release bundle${FLAVOR}Release done
使用步骤:
- 将脚本保存为
build_all_flavors.sh - 赋予执行权限:
chmod +x build_all_flavors.sh - 运行脚本:
./build_all_flavors.sh
三、CI/CD流水线集成
如果需要长期自动化构建,推荐集成到CI/CD工具中,以GitHub Actions为例:
name: 批量构建所有Flavor on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: 配置JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: gradle - name: 赋予gradlew执行权限 run: chmod +x gradlew - name: 执行批量构建 run: ./gradlew buildAllFlavors - name: 上传构建产物 uses: actions/upload-artifact@v4 with: name: 所有Flavor安装包 path: | app/build/outputs/apk/**/*.apk app/build/outputs/bundle/**/*.aab
四、构建优化建议
- 开启Gradle缓存:在
gradle.properties中添加org.gradle.caching=true,大幅减少重复构建时间 - 并行构建:添加
org.gradle.parallel=true,利用多核CPU并行处理任务(注意Flavor无资源冲突时使用) - 增量编译:确保项目开启增量编译配置,避免每次构建全量编译
- 资源隔离:如果机器性能允许,可通过工具并行执行多个Flavor构建,但需避免内存/CPU耗尽
内容的提问来源于stack exchange,提问作者Mohammed Shahbaz
相关产品推荐
相关产品推荐

