如何在assembleRelease后执行任务?
Firebase-Crash has a new feature。您可以使用Gradle命令上传mapping.txt
:./gradlew :app:firebaseUploadReleaseProguardMapping
。如何在assembleRelease后执行任务?
我想让这个过程自动化。我想在创建发行版apk后立即将该mapping.txt
文件上传到Firebase。
如何在强制assembleRelease
之后强制Gradle执行firebaseUploadReleaseProguardMapping
?有没有更简单的方法来做到这一点?
通常,您可以使用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被标记为“孵化”,这意味着这是一个实验性功能,其行为可以在将来的版本中更改。
... :app:transformClassesWithDexForRelease :app:mergeReleaseJniLibFolders UP-TO-DATE :app:transformNative_libsWithMergeJniLibsForRelease :app:transformNative_libsWithStripDebugSymbolForRelease :app:packageRelease :app:assembleRelease :app:firebaseUploadReleaseProguardMapping
请参阅firebaseUploadReleaseProguardMapping已经依赖于assembleRelease:仔细,当你的目标firebaseUploadReleaseProguardMapping得到执行的任务链
有了这个解决方案,我必须运行'./gradlew:app:firebaseUploadReleaseProguardMapping'。我对吗?我不想改变主要任务。我的意思是,我想运行'./gradlew:app:assembleRelease'。 –
你说得对。据我所知还有另一种方式,但请注意。 –
而不是 firebaseUploadReleaseProguardMapping.dependsOn assembleRelease 您需要: assembleRelease.dependsOn firebaseUploadReleaseProguardMapping –
看。您不需要强制任何额外的依赖关系来执行您正在尝试执行的操作 - 依赖关系已由插件设置,因此,当您告诉gradle运行该任务时,它将已完成发布版本。如果您始终希望在成功发布构建后上传,只需定位firebaseUploadReleaseProguardMapping而不是assembleRelease。
可以定义一个外部工具“生成APK签署并上传的ProGuard映射文件” - 而不是“生成APK签署”按钮,因为任务firebaseUploadReleaseProguardMapping
取决于assembleRelease
,因此将总是执行它。在火力地堡插件最近进行了更新,以1.1.0 ...
结果:
:mobile:assembleRelease
:mobile:firebaseUploadReleaseProguardMapping
Attempting to upload Proguard mapping file...
你是怎么解决这个问题? –
我还没解决。我正在使用@Doug史蒂文生的解决方案,但它不完全是我想要的。 –