7
votes

Comment exécuter une tâche des grades après la production d'APKS dans le studio Android?

La tâche suivante (dans Build.Gradle du module d'une application) semble fonctionner toujours avant que l'APK ne soit produite:

android.applicationVariants.all { variant ->
    if (variant.buildType.name == 'release') {
            def releaseBuildTask = tasks.create(name: "debug") {
            println("....................  test   ..............................")
        }
        releaseBuildTask.mustRunAfter variant.assemble
    }
}


0 commentaires

3 Réponses :


10
votes

essayez d'ajouter ceci en vous app / build.gradle.gradle xxx

Invoquez la commande de construction et spécifiez la tâche assemblagebug

./ gradlew assemblagebug


5 commentaires

Merci beaucoup pour la réponse. J'ai migré vers Android Studio d'Eclipse hier. La différence est assez significative.


Cela doit-il être invoqué via la ligne de commande? Le bloc Dolast sera-t-il toujours exécuté si nous utilisons le bouton Green Run dans Android Studio?


@ 11m0 Exécutez la tâche de la ligne de commande ou du studio Android est totalement identique.


Vous devez mettre cette commande à l'intérieur de la suite après avoir commencé à partir de gradle 2.2 Stackoverflow.com/a/52915218/8942811


Les tâches Android sont généralement créées dans la phase "Afletvalouse". À partir de 2.2, ces tâches incluent également "Assemblledebug" et "AssemblleLease". Pour accéder à de telles tâches, l'utilisateur devra utiliser une fermeture après-évaluation.



16
votes

Les tâches Android sont généralement créées dans la phase "Afletvalouse". À partir de la gradle 2.2, ces tâches incluent également "assemblledebug" et "assemblageasease". Pour accéder à de telles tâches, l'utilisateur devra utiliser un Fermeture Afletvalouse:

afterevaluate { assembledebug.dependson sentastask }

Source: https://code.google.com/ P / Android / Problèmes / Détails? ID = 219732 # C32


0 commentaires

10
votes

J'ai trouvé une solution qui fonctionne, pour copier l'APK de libération dans la racine du projet sur la construction de la construction.

    android {
        ...
        task copyReleaseApk(type: Copy) {
            from 'build/outputs/apk'
            into '..' // Into the project root, one level above the app folder
            include '**/*release.apk'
        }

        afterEvaluate {
            packageRelease.finalizedBy(copyReleaseApk)
        }
}


0 commentaires