Extrêmement long à construire avec Gradle (Android Studio)
droit maintenant, nous sommes dans une situation de construire des temps de 2 minutes 30 secondes pour la très simple changement. C' (par rapport à ANT) est incroyablement lent et est en train de tuer la productivité de l'ensemble de l'équipe.
Je suis l'aide d'Android Studio et à l'aide de la "locale gradle de la distribution".
J'ai essayé de donner plus de mémoire à gradle:
org.gradle.jvmargs=-Xmx6096m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Beaucoup plus de mémoire. ET IL EST ENCORE en DONNANT des ERREURS DE MÉMOIRE de temps en temps.
Exception in thread "pool-1-thread-1" de java.lang.OutOfMemoryError: GC généraux limite dépassée
Incroyable. Je suis en utilisant le parallèle de l'option et le démon:
org.gradle.en parallèle=true
org.gradle.daemon=true
Cela n'aide pas vraiment.
J'ai mis les paramètres susmentionnés dans ~/.gradle/gradle.les propriétés (et je doute même que Android studio est ignorant, je l'ai donc testé, il n'est pas en l'ignorant).
Toujours dans le terminal, j'obtiens 1:30 de temps de compilation vs 2:30 dans Android Studio, donc pas sûr de ce qui est mal il. 1:30 est TOUJOURS FOU par rapport à la Fourmi. Si vous savez ce qu'est Android Studio est en train de faire (ou d'ignorer, ou de réécriture que gradle config), je serais heureux de les connaître.
Donc, juste CMD + B (simple compilation) est super rapide après les changements, comme les 7 secondes.
Mais quand il s'agit de l'exécution de l'application, il commence la tâche dexXxxDebug, qui est juste de nous tuer.
J'ai essayé de mettre
dexOptions { preDexLibraries = false }
Ne l'aide pas.
Je comprends que gradle est sans doute pas encore prêt pour les environnements de production, mais je commence à regretter notre décision d'aller de si tôt pour elle.
Nous avons beaucoup de modules, ce qui est probablement une partie du problème, mais ce n'était pas un problème avec les Fourmis.
Toute aide appréciée,
Dan
Plus d'information sur les temps d'exécution:
Description Durée
Total Build Time 1m36.57s
Startup 0.544s
Settings and BuildSrc 0.026s
Loading Projects 0.027s
Configuring Projects 0.889s
Task Execution 1m36.70s
Le temps eater:
:app:dexDebug 1m16.46s
- Quand vous faites Cmd-B construit à partir de l'IDE, il ne fait pas une version complète en aller tout le chemin à un APK -- c'est pourquoi il est beaucoup plus lent quand vous allez à exécuter, parce que là, il fait un full APK et il le fait en dex, ce qui peut prendre du temps. Jetez un oeil à ce fil de discussion sur l'adt-dev mailing list qui explique les temps de construire groups.google.com/forum/#!topic/adt-dev/un-zmpJ6yCuI et rassembler les informations, les débats et d'augmenter votre question pour voir si nous pouvons faire toute la lumière sur elle.
- Je sais que c'est juste de la compilation de la source, sans la construction de la dex. Mais comment était-Ant en mesure de faire face à cette tâche pour moins de 20 secondes, et j'ai besoin d'environ 2,5 minutes ici?
- C'est une bonne question, mais si vous pouvez réunir plus d'informations je n'aurai pas à faire beaucoup de mauvaises suppositions 😉
- Information sur le temps ajouté à la question.
- Comme je l'ai dit, l'exécution de Gradle à partir de la console est plus rapide. Toutes les informations au sujet de la différence entre Android Studio et en cours d'exécution gradle directement les est également apprécié.
- Cela vous aide? groups.google.com/forum/#!topic/adt-dev/r4p-sBLl7DQ
- Cela aide BEAUCOUP. De 2,5/1,5 minutes à 37 à 40 secondes. Merci!!!! J'aimerais voir si nous pouvons optimiser davantage. Si vous postez votre commentaire comme réponse, je vais upvote (et probablement accepter après la collecte d'autres réponses).
- Voir stackoverflow.com/questions/17324849/... -- faites défiler jusqu'à la plus récente des réponses
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas tout à fait sûr pourquoi Android Studio est plus lent que la ligne de commande, mais vous pouvez accélérer vos constructions en tournant sur les surcoûts dexing. Dans votre module de génération d'un fichier, d'ajouter cette option à votre
android
bloc:Dans ce
dexOptions
bloc vous pouvez également spécifier la taille du tas pour le dex processus, par exemple:Ces options sont prises à partir d'un thread sur l'adt-dev mailing list ( https://groups.google.com/forum/#!topic/adt-dev/r4p-sBLl7DQ ), qui a un peu plus de contexte.
Notre équipe a été confrontée au même problème.
Notre projet dépasse de la méthode limite pour dex(>65k).
Donc, en dehors de la bibliothèque de projet, nous avons mis ci-dessous les options de construction.gradle:
Dans notre projet de construction.gradle:
précédemment, nous avions différentiels vrai. après avoir commenté sa prise autour de 20 ans à courir par rapport à 2minutes 30 secondes.
Je ne sais pas ce qui peut résoudre votre problème. mais il peut aider à d'autres. 🙂
Avertissement: Ce n'est pas une solution - c'est une déclaration qu'il n'y a pas de solution avec lien pertinent des sources pour prouver qu'il.
Depuis toutes les réponses ici ne permettent pas de résoudre un problème qui a été persistant depuis 2014, je vais aller de l'avant et l'après quelques liens qui décrivent très similaire de problème et de présenter OS-réglages spécifiques que pourrait ou ne pourrait pas aider, depuis l'OP ne semble pas préciser, et les solutions varient beaucoup à travers eux.
Premier est le réelle PSBA bug-tracker question en se référant à la parallélisation, avec beaucoup de pertinent choses, encore et encore, avec beaucoup de gens se plaindre que le hors-la version 2.2.1. J'aime le gars qui relève de la question (une haute priorité à cela) id y compris "666" ne pas être une coïncidence. La façon dont la plupart des gens décrivent des programmes de musique et le mouvement de la souris bégaiement lors des générations se sent comme se regarder dans un miroir...
Vous devriez noter gens bons trucs avec des processus de lasso pour Windows, alors que je ne vois pas vraiment de rapports quelque chose de bon à changer la priorité des qui pratiquent ou cpu-limitation de la sous *nix variantes.
Ce mec (qui déclare qu'il n'utilise pas gradle) présente en effet de très belles choses à Demander à Ubuntu, qui, malheureusement, ne fonctionne pas dans mon cas.
Voici une autre alternative que les limites de threads de gradle exécution, mais cela n'a pas vraiment l'améliorer dans mon scénario probablement dû à ce que quelqu'un a dit sur un autre lien sur studio de ponte de plusieurs gradle cas (alors que le paramètre affecte uniquement un exemple de parallélisme).
Noter que tout cela remonte à l'origine de "666", de haute priorité...
Personnellement, je ne pouvais pas tester plusieurs des solutions, parce que je travaille sur un géré (pas de racine privs) machine Ubuntu et ne peut pas apt-get/changer la priorité, mais je peux vous dire que j'ai un core i7-4770, 8GO de RAM et un hybride SSD, et j'ai ce même problème, même après beaucoup de mémoire et de gradle ajustements au fil des ans. C'est un alléchant problème, et je ne peux pas comprendre comment Google n'a pas commis les ressources humaines nécessaires à la gradle projet de réparer quelque chose qui est au cœur du développement de la plus importante plate-forme qu'ils construisent.
Une chose à noter sur mon environnement est: je travaille dans un multi-dépendance projet de studio, avec environ 10 sous-projets, tous en s'appuyant sur leurs propres et de remplir le gradle pipeline.
Lors du passage d'une valeur, vous pouvez ajouter la lettre " k " pour indiquer kilo-octets, 'm' pour indiquer mégaoctets, ou " g " pour indiquer gigaoctets.
'--hors ligne " résolu mon problème.