2016-12-29 5 views
2

Firebase-Crash has a new feature. Sie können Ihre mapping.txt mit einem Befehl Gradle hochladen: ./gradlew :app:firebaseUploadReleaseProguardMapping.Wie führe ich eine Aufgabe nach dem AssemblyRelease aus?

Ich möchte diesen Prozess automatisieren. Ich möchte diese mapping.txt Datei zu Firebase hochladen, sobald ich eine Release-APK erstelle.

Wie kann ich Gradle zwingen, firebaseUploadReleaseProguardMapping nach einem erfolgreichen assembleRelease auszuführen? Gibt es einen einfacheren Weg dies zu tun?

+0

Wie haben Sie dieses Problem lösen? –

+0

Ich habe es noch nicht gelöst. Ich benutze die Lösung von @Doug Stevenson, aber es ist nicht genau das, was ich wollte. –

Antwort

3

Im Allgemeinen können Sie mit der Methode dependsOn Abhängigkeiten für die Aufgabe definieren.

Zum Beispiel:

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

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

B.dependsOn A 

Sie werden

> gradle -q B 
Hello from A 
Hello from B 

In Ihrem Fall erhalten Sie angeben können:

firebaseUploadReleaseProguardMapping.dependsOn assembleRelease 

Auch können Sie die finalizedBy Methode verwenden.

A.finalizedBy B 

Beachten Sie, dass:

  • diese B auch wenn A gescheitert laufen wird.
  • finalizedBy ist als "inkubating" markiert, was bedeutet, dass dies ein experimentelles Merkmal ist und sein Verhalten in zukünftigen Versionen geändert werden kann.
+0

Mit dieser Lösung muss ich './gradlew: app: FirebaseUploadReleaseProguardMapping' ausführen. Habe ich recht? Ich möchte die Hauptaufgabe nicht ändern. Ich meine, ich möchte './gradlew: app: assembleRelease' ausführen. –

+0

Sie haben Recht.Es gibt einen anderen Weg, wie ich weiß, aber behalte die Aufmerksamkeit. –

+0

Anstelle von firebaseUploadReleaseProguardMapping.dependsOn assembleRelease benötigen Sie: assembleRelease.dependsOn firebaseUploadReleaseProguardMapping –

1

Achten Sie genau auf die Kette von Aufgaben, die ausgeführt werden, wenn Sie firebaseUploadReleaseProguardMapping Ziel:

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

Sehen Sie, dass firebaseUploadReleaseProguardMapping bereits auf assembleRelease abhängt. Sie müssen keine zusätzlichen Abhängigkeiten für das, was Sie versuchen zu erzwingen, erzwingen - die Abhängigkeit ist bereits vom Plugin eingerichtet, so dass, wenn Sie Gradle sagen, diese Aufgabe auszuführen, es bereits einen Release-Build abgeschlossen hat. Wenn Sie nach einem erfolgreichen Release-Build immer hochladen möchten, richten Sie einfach FirebaseUploadReleaseProguardMapping anstelle von assemblyRelease ein.

0

Man kann ein externes Tool definieren „APK erzeugt unterzeichnet und die ProGuard-Mapping-Datei hochladen“ - statt „unterzeichnet APK Generieren“, weil die Aufgabe firebaseUploadReleaseProguardMapping auf assembleRelease abhängig und deshalb wird immer ausführen. vor kurzem die Firebase Plugins wurde 1.1.0 aktualisiert ...

Screenshot

das Ergebnis:

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