143 votes

Quelles sont les différences entre les tâches d'assemblage et de construction de niveaux?

Si je ne me trompe pas, gradle assemble s'exécute gradle assembleDebug et gradle assembleRelease , mais je crois que gradle build fait de même, alors quelles sont les différences entre les deux?

159voto

David Medenjak Points 4553

Assemble construira vos artefacts et assemblera vos artefacts avec des vérifications supplémentaires.

build dépend de assemble , donc build est en quelque sorte un sur-ensemble de assemble

Vous pouvez consulter les tâches qui seront exécutées à l'aide de l'indicateur --dry-run . par exemple

 gradlew build --dry-run
 

Vous verrez que, à part assemble lint et test seront exécutés.

36voto

Laurence Gonsalves Points 50783

De gradle tasks --all :

 Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
 

build est effectivement assemble + check (et check est test + des tâches de peluchage).

22voto

Doron Go Points 11

Il est vrai que, selon gradle tasks il ressemble à l' build est un sur-ensemble de l' assemble, y compris les tests. Mais(!) de ma courte expérience on dirait vraiment que c'est pas le cas.

J'ai donc couru les 2 commandes dans la ligne de commande à l'aide de la gradle wrapper avec --scan drapeau après l'exécution propre à chaque fois. C'est la comparaison:

  1. Souhaité construit fichiers:
    • Après l'exécution de l' assembleDebug j'ai obtenu tous les fichiers construits que je voulais - *.apk et *.aar fichiers.
    • Après l'exécution de l' buildDebug je n'ai pas eu l'un de ces fichiers.
  2. Quantité de tâches couru selon les scans:
    • assembleDebug - 109 tâches
    • buildDebug - 91 tâches
  3. Montant de dépendances en fonction de l'analyse:
    • assembleDebug - 172 à partir de 20 configurations
    • buildDebug - 104 à partir de 18 configurations
    • Il semble que la raison pour laquelle ils diffèrent, c'est que, en assembleDebug dans 2 de mes 3 sous projets (qui sont des bibliothèques java, pas d'application) il y a un plus de configuration, appelé lintClassPath. Cette configuration est manquant en buildDebug.
  4. Un autre point à mentionner est que lorsque j'ai cherché dans la liste des tâches, il semblait buildDebug n'a pas d'appel assembleDebug de la tâche et de l' assembleDebug n'a pas d'appel buildDebug tâches.
  5. Et la dernière chose intéressante à mentionner dans ce contexte, c'est que lorsque j'ai couru à construire à partir de l'Android Studio (Build -> Make Project- )), je vois dans mon analyse que la commande qui a été réellement exécuté l' assembleDebug. Plus précisément, il a couru :app:assembleDebug.

Comme vous pouvez le voir, je ne comprends pas vraiment les différences de moi-même, mais c'est ce que j'ai trouvé. Si quelqu'un peut il m'expliquer et que les autres utilisateurs à lire ici, il pourrait être génial :) Merci!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X