2016-12-29 5 views
2

Firebase-Crash has a new feature. Вы можете загрузить свой mapping.txt с помощью команды Gradle: ./gradlew :app:firebaseUploadReleaseProguardMapping.Как выполнить задачу после сборки?

Я хочу автоматизировать этот процесс. Я хочу загрузить этот файл mapping.txt в Firebase, как только создаю apk.

Как я могу заставить Gradle выполнить firebaseUploadReleaseProguardMapping после успешного завершения assembleRelease? Есть ли более простой способ сделать это?

+0

Как вы решить эту проблему? –

+0

Я еще не решил. Я использую решение @Doug Stevenson, но это не совсем то, что я хотел. –

ответ

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 обозначается как «инкубация», что означает, что это экспериментальная функция, и ее поведение может быть изменено в будущих выпусках.
+0

С этим решением я должен запустить './gradlew: app: firebaseUploadReleaseProguardMapping'. Я прав? Я не хочу менять основную задачу. Я имею в виду, я хочу запустить './gradlew: app: assembleRelease'. –

+0

Вы правы.Есть другой способ, как я знаю, но обратите внимание. –

+0

Вместо firebaseUploadReleaseProguardMapping.dependsOn assembleRelease вам необходимо: assembleRelease.dependsOn firebaseUploadReleaseProguardMapping –

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 и поэтому всегда выполнить его. Firebase Плагины недавно была обновлена ​​1.1.0 ...

Screenshot

результат:

:mobile:assembleRelease 
:mobile:firebaseUploadReleaseProguardMapping 
Attempting to upload Proguard mapping file... 
Смежные вопросы