android - Android项目中的Gradle任务顺序

标签 android gradle android-gradle-plugin

我的 Android 项目中依赖任务的顺序有问题。

这是我的 app/build.gradle 文件的一部分:

task release

task archiveRelease(type: Copy) {
    println 'copy apk and mapping files'
    from './build/outputs/'
    into "../releases/${rootProject.ext.configuration.version_code}_${rootProject.ext.configuration.version_name}"
    include('apk/release/app-release.apk', 'mapping/release/mapping.txt')
    rename('app-release.apk', "${rootProject.ext.configuration.package}_${rootProject.ext.configuration.version_code}_${rootProject.ext.configuration.version_name}.apk")
    rename('mapping.txt', "mapping_${rootProject.ext.configuration.version_code}_${rootProject.ext.configuration.version_name}.txt")
}

project.afterEvaluate {

    dependencyUpdates.dependsOn clean
    assembleRelease.dependsOn clean

    archiveRelease.mustRunAfter("assembleRelease")
    release.dependsOn assembleRelease
}

但是当我启动 release 任务时,它会在开头打印 copy apk and mapping files 而不是在 assembleRelease 的结尾。这是控制台输出:

$ ./gradlew release
Parallel execution with configuration on demand is an incubating feature.

> Configure project :app
copy apk and mapping files

如何在构建完成后执行archiveRelease

最佳答案

如果你想在使用以下调用发布任务时触发构建:

  • ./gradlew release : build => archiveRelease => release
  • ./gradlew build : build => archiveRelease => release

渐变:

task(release) {
    doLast {
        println 'release task'
    }
}
task(archiveRelease) {
    doLast {
        println 'archiveRelease task'
    }
}

build.finalizedBy release
archiveRelease.dependsOn build
release.dependsOn archiveRelease

所以在那种情况下,./gradlew build./gradlew release 是等价的,如果那是你想要的。

但是如果你想要一个独立的release任务来执行

  • ./gradlew build : build => archiveRelease => release
  • ./gradlew release : archiveRelease => 发布

渐变:

task(release) {
    doLast {
        println 'release task'
    }
}
task(archiveRelease) {
    doLast {
        println 'archiveRelease task'
    }
}

build.finalizedBy release
release.dependsOn archiveRelease

关于android - Android项目中的Gradle任务顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47006416/

相关文章:

javascript - 代码不适用于 Phonegap 应用程序

Android Studio 未提交到 GitHub

android - 将 Kotlin 运行时库添加到 android 中的 aar

gradle - 同一多项目构建中插件与项目之间的依赖关系

android - 哪个 gradle 版本与最新的 Android Studio 一起使用?

Android NDK 和动态壁纸渲染

java - okHttp NetworkOnMainThreadException 尽管有新线程

android - 许多库上的 APK META-INF 中复制的重复文件?

android - 使用 Android Gradle 插件 3.3.0 合并资源时构建失败

java - android gradle构建错误?