2016-12-29 50 views
2

Firebase-Crash has a new feature。您可以使用Gradle命令上傳mapping.txt./gradlew :app:firebaseUploadReleaseProguardMapping如何在assembleRelease後執行任務?

我想讓這個過程自動化。我想在創建發行版apk後立即將該mapping.txt文件上傳到Firebase。

如何在強制assembleRelease之後強制Gradle執行firebaseUploadReleaseProguardMapping?有沒有更簡單的方法來做到這一點?

+0

你是怎麼解決這個問題? –

+0

我還沒解決。我正在使用@Doug史蒂文生的解決方案,但它不完全是我想要的。 –

回答

3

通常,您可以使用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得到執行的任務鏈

+0

有了這個解決方案,我必須運行'./gradlew:app:firebaseUploadReleaseProguardMapping'。我對嗎?我不想改變主要任務。我的意思是,我想運行'./gradlew:app:assembleRelease'。 –

+0

你說得對。據我所知還有另一種方式,但請注意。 –

+0

而不是 firebaseUploadReleaseProguardMapping.dependsOn assembleRelease 您需要: assembleRelease.dependsOn firebaseUploadReleaseProguardMapping –

1

看。您不需要強制任何額外的依賴關係來執行您正在嘗試執行的操作 - 依賴關係已由插件設置,因此,當您告訴gradle運行該任務時,它將已完成發佈版本。如果您始終希望在成功發佈構建後上傳,只需定位firebaseUploadReleaseProguardMapping而不是assembleRelease。

0

可以定義一個外部工具「生成APK簽署並上傳的ProGuard映射文件」 - 而不是「生成APK簽署」按鈕,因爲任務firebaseUploadReleaseProguardMapping取決於assembleRelease,因此將總是執行它。在火力地堡插件最近進行了更新,以1.1.0 ...

Screenshot

結果:

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