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

Android项目中如何正确为assembleRelease任务添加前置依赖?

Android Gradle:如何在assembleRelease前执行自定义任务?

我帮你分析下你之前尝试的两种方法为什么没生效,再给你正确的实现方式:

先说说你之前的问题

  • 第一种方法的问题:你用了<<这种旧的Groovy语法(Gradle 5.x之后已经不推荐使用,现在标准写法是doLast),另外whenTaskAdded的监听方式虽然理论上可行,但不如直接定位到assembleRelease任务设置依赖更可靠,有时候可能因为任务创建时机的问题导致监听失效。
  • 第二种方法完全用错了地方:dependencies块是用来声明项目的依赖库(比如jar、aar、远程依赖)的,根本不是用来配置任务依赖的,所以这种写法完全不会触发你的自定义任务。

正确的实现方式

下面给你两种可靠的写法,任选一种都能解决问题:

写法一:直接给assembleRelease任务加依赖

这种方式适合只针对assembleRelease单个任务的场景:

// 1. 定义你的自定义任务,用标准的doLast来写执行逻辑
task preBuild1 {
    doLast {
        println 'Copying correct build.gradle to the foo library'
        copy {
            from "../../androidRelated/gradle/foo"
            into "foo"
        }
    }
}

// 2. 找到assembleRelease任务,让它依赖preBuild1
// 这样执行assembleRelease时,会先跑完preBuild1再执行自身
tasks.named('assembleRelease') { assembleReleaseTask ->
    assembleReleaseTask.dependsOn(preBuild1)
}

// 下面是你原本的Android配置和依赖,保持不变
android {
    // 你的compileSdk、defaultConfig等配置...
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation(name: 'AudienceNetwork', ext:'aar')
    implementation(name: 'GoogleAIDL', ext:'aar')
    implementation(name: 'GooglePlay', ext:'aar')
    // 其他依赖...
}

写法二:针对所有Release变体的assemble任务

如果你项目里有productFlavor(比如免费版、付费版),会生成assembleFreeRelease、assemblePaidRelease这类任务,用这种方式可以让自定义任务在所有Release变体的assemble任务前执行:

task preBuild1 {
    doLast {
        println 'Copying correct build.gradle to the foo library'
        copy {
            from "../../androidRelated/gradle/foo"
            into "foo"
        }
    }
}

android {
    // 你的Android基础配置...
    
    // 遍历所有变体,给Release类型的assemble任务加依赖
    applicationVariants.all { variant ->
        if (variant.buildType.name == 'release') {
            variant.assembleProvider.get().dependsOn(preBuild1)
        }
    }
}

// 依赖部分保持不变
dependencies {
    // ... 你的依赖声明
}

验证方式

执行gradle assembleRelease的时候,你应该能先看到控制台打印出Copying correct build.gradle to the foo library,然后才会开始正常的Release构建流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:18:38