Firebase-Crash 有一个新功能。您可以使用 Gradle 命令上传您的
mapping.txt
:./gradlew :app:firebaseUploadReleaseProguardMapping
。
我想自动化这个过程。我想在创建发布 apk 后立即将该
mapping.txt
文件上传到 Firebase。
如何在
firebaseUploadReleaseProguardMapping
成功后强制 Gradle 执行 assembleRelease
?有更简单的方法吗?
一般来说,您可以使用
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
。project.tasks.whenTaskAdded { Task task ->
if (task.name == 'assembleRelease') {
task.doLast {
println("makeSystemSignature")
}
task.finalizedBy(makeSystemSignature)
}}
仔细查看当您定位 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。
可以定义一个外部工具“生成签名的 APK 并上传 ProGuard 映射文件” - 而不是“生成签名的 APK”按钮,因为任务
firebaseUploadReleaseProguardMapping
依赖于 assembleRelease
,因此将always 执行它。 Firebase 插件最近更新至 1.1.0 ...
结果:
:mobile:assembleRelease
:mobile:firebaseUploadReleaseProguardMapping
Attempting to upload Proguard mapping file...
在
build.gradle
中做:
afterEvaluate {
tasks.assembleRelease.finalizedBy {
task postReleaseTask(type: Exec) {
// Work
}
}
}
或者根据您的情况:
afterEvaluate {
tasks.assembleRelease.finalizedBy firebaseUploadReleaseProguardMapping
}