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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:26:11