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?
Réponses
Trop de publicités?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.
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:
- 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.
- Après l'exécution de l'
- Quantité de tâches couru selon les scans:
-
assembleDebug
- 109 tâches -
buildDebug
- 91 tâches
-
- 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 enbuildDebug
.
-
- Un autre point à mentionner est que lorsque j'ai cherché dans la liste des tâches, il semblait
buildDebug
n'a pas d'appelassembleDebug
de la tâche et de l'assembleDebug
n'a pas d'appelbuildDebug
tâches. - 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!