Lors de la construction avec gradle sur une configuration multi-projets contenant environ 140 projets/bibliothèques, le temps de construction a pris 1 heure et 22 minutes. Et j'utilisais --parallel
. Et notre build ANT prend moins de 20 minutes sans construction parallèle.
Voici exactement ce que j'ai fait.
./gradlew clean
./gradlew build --parallel
J'ai fait un petit test, il semble que le dexing prenne le plus de temps. Existe-t-il un moyen d'obtenir que le processus Gradle réutilise les éléments qu'il a déjà déxés? Si les bibliothèques ont déjà été construites, il devrait réutiliser les bibliothèques déjà dexées.
J'ai vu l'option --no-rebuild
, mais quand je cours avec cette option, il dit ce qui suit
File '/path/to/project/build/libs/project.aar' specified for property 'bundle' does not exist.
J'ai remplacé le chemin du fichier et le nom du projet par des éléments génériques.
Utilisation de Gradle 1.9-rc-3
Informations complémentaires (15 janvier 2014):
preDexDebug
et preDexRelease
ont pris TRÈS longtemps sur chaque projet. Beaucoup plus longtemps que toute autre tâche.
Progrès (15 janvier 2014):
Ok, pour l'instant, je mets preDexLibraries = false
dans tous les build.gradle
des dossiers. Cependant, je voudrais toujours connaître un endroit centralisé où je peux mettre cette entrée et cela affecte tous les autres build.gradle
des dossiers.
Cependant, dexRelease
et dexDebug
prennent maintenant beaucoup de temps. Existe-t-il un moyen de dire à la génération de ne faire que dexDebug
ou dexRelease
et d'ignorer l'autre?
Progrès (15 janvier 2014):
L'utilisation de assembleDebug
a fonctionné. Cependant, il semble toujours qu'il ne réutilise pas les bibliothèques déjà dexées. Parce que le dexing prend toujours une éternité. Cela prend environ une minute pour chaque projet. Existe-t-il un moyen d'obtenir gradle pour réutiliser les bibliothèques déjà dexées? Ou y a-t-il une autre raison pour laquelle la construction prend encore environ une heure? Notre processus ANT prend moins de 15 minutes.
En faisant un clean
vous supprimez en fait les bibliothèques déjà prédéfinies.
Comme suggéré dans ce fil vous pourriez gagner du temps sur les builds clean
en désactivant le prédexage (car lors de la prochaine build, ils seront supprimés):
Android {
dexOptions {
preDexLibraries = false
}
}
À l'heure actuelle, chaque projet pré-décompose ses dépendances par lui-même. Cela signifie que 2 composants dépendant de la même bibliothèque exécuteront tous les deux un pré-dex sur classes.jar de cette bibliothèque, ce qui est idiot. Nous cherchons à résoudre ce problème.
Avez-vous essayé de définir les paramètres du compilateur Gradles?
Si vous avez des dépendances distantes, chaque fois que vous exécutez le projet, il sera exploité avec des ressources distantes utilisant le réseau. Vous devez définir l'instruction du compilateur Gradles pour qu'il travaille hors ligne en utilisant:
--offline
Ici, je vous laisse une capture d'écran des paramètres du compilateur pour de meilleures performances:
Ou quelle est la même chose ...
Source: http://gradle.org/docs/current/userguide/gradle_command_line.html