Android升级后Bitrise构建失败:BundleIdeModelProducerTask文件缺失
针对BundleIdeModelProducerTask找不到自定义命名AAB的解决方案
问题根源
Gradle 8.2引入的BundleIdeModelProducerTask默认绑定默认命名的AAB文件(如app-release.aab),你的自定义重命名逻辑导致该任务无法定位目标文件;同时Bitrise的构建环境缓存、任务执行顺序差异可能触发AAB空文件问题。
1. 手动指定任务的目标AAB文件
在模块级build.gradle.kts(或Groovy版build.gradle)中,直接修改BundleIdeModelProducerTask的finalBundleFile属性,指向你的自定义命名AAB:
Kotlin DSL 示例
tasks.withType<BundleIdeModelProducerTask> { // 替换为你的bundle任务名称(如bundleAppnameRelease) val targetBundleTask = tasks.named<org.gradle.api.tasks.bundling.Bundle>("bundleAppnameRelease") // 用动态变量拼接自定义文件名(版本号、构建号可从项目或Bitrise环境变量获取) val customAabName = "appname-${project.version}-${System.getenv("BITRISE_BUILD_NUMBER")}-QA.aab" finalBundleFile.set(targetBundleTask.map { it.outputDirectory.file(customAabName) }) }
Groovy 示例
tasks.withType(BundleIdeModelProducerTask) { def targetBundleTask = tasks.named('bundleAppnameRelease') def customAabName = "appname-${project.version}-${System.getenv('BITRISE_BUILD_NUMBER')}-QA.aab" finalBundleFile.set(targetBundleTask.map { it.outputDirectory.file(customAabName) }) }
注意:Bitrise的构建号可通过环境变量
BITRISE_BUILD_NUMBER直接获取,确保版本号等变量在构建时已正确注入。
2. 修复AAB空文件问题
- 确保重命名任务在AAB生成后执行:自定义重命名逻辑必须依赖bundle任务的输出,避免提前执行导致读取空文件:
tasks.register("renameReleaseAab") { dependsOn(tasks.bundleAppnameRelease) doLast { val sourceAab = tasks.bundleAppnameRelease.get().outputs.files.singleFile val targetDir = file("${project.buildDir}/outputs/bundle/appnameRelease/") val targetAab = File(targetDir, "appname-${project.version}-${System.getenv("BITRISE_BUILD_NUMBER")}-QA.aab") sourceAab.copyTo(targetAab, overwrite = true) } }
- 禁用Bitrise增量构建缓存:在Workflow的Gradle构建步骤中添加参数
--no-build-cache,或添加Clean Repository步骤,避免缓存导致的文件生成异常。
3. 强制任务执行顺序
如果保留重命名任务,需确保BundleIdeModelProducerTask在重命名完成后执行:
tasks.withType<BundleIdeModelProducerTask> { mustRunAfter(tasks.named("renameReleaseAab")) }
4. 对齐Bitrise与本地环境配置
- 确认Bitrise使用Java 17:在Workflow的
Android Build步骤中设置Java Version为17,或通过脚本指定JAVA_HOME。 - 锁定Gradle版本:确保项目根目录的
gradle-wrapper.properties中指定Gradle 8.2的distributionUrl,避免Bitrise自动切换版本。
内容的提问来源于stack exchange,提问作者petestmart
相关产品推荐
相关产品推荐

