assembleRelease后如何执行任务?

问题描述 投票:0回答:5

Firebase-Crash 有一个新功能。您可以使用 Gradle 命令上传您的

mapping.txt
./gradlew :app:firebaseUploadReleaseProguardMapping

我想自动化这个过程。我想在创建发布 apk 后立即将该

mapping.txt
文件上传到 Firebase。

如何在

firebaseUploadReleaseProguardMapping
成功后强制 Gradle 执行
assembleRelease
?有更简单的方法吗?

android gradle android-gradle-plugin firebase-crash-reporting
5个回答
4
投票

一般来说,您可以使用

dependsOn
方法定义任务的依赖关系。

例如:

task A << {
    println 'Hello from A'
}

task B << {
    println 'Hello from B'
}

B.dependsOn A

您将获得

> gradle -q B
Hello from A
Hello from B

根据您的情况,您可以指定:

firebaseUploadReleaseProguardMapping.dependsOn assembleRelease

您也可以使用

finalizedBy
方法。

A.finalizedBy B

请注意:

  • 即使
    B
    失败,这也会运行
    A
  • finalizedBy 被标记为“孵化”,这意味着这是一个实验性功能,其行为可以在未来版本中更改。

2
投票
project.tasks.whenTaskAdded { Task task ->
if (task.name == 'assembleRelease') {
    task.doLast {
        println("makeSystemSignature")
    }
    task.finalizedBy(makeSystemSignature)
}}

1
投票

仔细查看当您定位 firebaseUploadReleaseProguardMapping 时执行的任务链:

...
:app:transformClassesWithDexForRelease
:app:mergeReleaseJniLibFolders UP-TO-DATE
:app:transformNative_libsWithMergeJniLibsForRelease
:app:transformNative_libsWithStripDebugSymbolForRelease
:app:packageRelease
:app:assembleRelease
:app:firebaseUploadReleaseProguardMapping

看到 firebaseUploadReleaseProguardMapping 已经依赖于 assembleRelease。您不需要为您想要执行的操作强制任何额外的依赖项 - 该依赖项已由插件设置,因此当您告诉 gradle 运行该任务时,它已经完成了发布构建。如果您总是想在成功发布构建后上传,只需定位 firebaseUploadReleaseProguardMapping 而不是 assembleRelease。


0
投票

可以定义一个外部工具“生成签名的 APK 并上传 ProGuard 映射文件” - 而不是“生成签名的 APK”按钮,因为任务

firebaseUploadReleaseProguardMapping
依赖于
assembleRelease
,因此将always 执行它。 Firebase 插件最近更新至 1.1.0 ...

结果:

:mobile:assembleRelease
:mobile:firebaseUploadReleaseProguardMapping
Attempting to upload Proguard mapping file...

0
投票

build.gradle
中做:

afterEvaluate {
    tasks.assembleRelease.finalizedBy {
        task postReleaseTask(type: Exec) {
            // Work
        }
    }
}

或者根据您的情况:

afterEvaluate {
    tasks.assembleRelease.finalizedBy firebaseUploadReleaseProguardMapping
}
© www.soinside.com 2019 - 2024. All rights reserved.