27 votes

Accélérez le temps de construction d'un projet Android dans IntelliJ IDEA

Je me demande, s'il y a un moyen, comment définir skip packaging and dexing dans IntelliJ IDEA comme dans Eclipse et ADT. Il y a un champ Additional VM Options dans la section Android DX Compiler dans IntelliJ Preferences , peut-être que cela pourrait être un moyen, comment le configurer. J'apprécierais également un autre conseil, comment accélérer la construction d'un projet Android IntelliJ.

30voto

Jake Andreu Points 287

Je suis l'aide de l'Ide, 12. J'ai gagné du temps déploiement et l'exécution d'applications Android permettant l'Ide de "projet automatiquement". Pour l'activer, allez dans Préférences -> Compilateur et cochez la case "Faire projet automatiquement". Dans la même fenêtre, cochez la case "Compiler des modules indépendants en parallèle".

Permettant de "Faire projet automatiquement" vous permet de sauter "Faire" tâche d'une application Android lancement. Vous pouvez le supprimer dans "Exécuter/Déboguer les Configurations", en sélectionnant votre Application Android et la suppression de "Faire" tâche "Avant le lancement de la" section.

11voto

yorkw Points 24676

Dans les préférences d'Eclipse, le nom complet de l' skip packaging and dexing vous faites référence est - Skip packaging and dexing until export or launch. (Speeds up automatic builds on file save), ce qui est une fonction ajoutée depuis ADT 12 dans l'orde à l'adresse Eclipse différentiels problème de compilation (qui ralentissent le développement sur Eclipse), découvrez les Révisions 12.0.0 (juillet 2011) et ce lien pour plus de détails, Notez que l'emballage et dexing sont fondamentaux étape lorsque vous déboguez/projet en cours d'exécution, indépendamment de qui IDE (ou non) que vous utilisez. enter image description here

Comme CrazyCoder mentionné dans ses commentaires, l'Ide ne supporte pas Eclipse comme les différentiels de compilation et des Problèmes de volet par défaut, dans un autre mot, il n'a pas d'auto compiler votre projet lorsque le fichier a changé. Donc, ce n'est vraiment pas un problème, ni la fonctionnalité à l'Ide.

Votre processus de génération de goulot d'étranglement vient probablement de l'autre endroit. Autant que je sache, dans un projet de moyenne envergure, la plupart du temps du processus d'édification de passer sur la compilation de ressources (AAPT commande, découvrez processus de construction du diagramme). Certains gens intelligents de xdadevelopers trouvé goulot d'étranglement et de créer un correctif de la version de AAPT:

http://forum.xda-developers.com/showthread.php?t=1907281

J'utilise moi-même et je dirais que le gain de vitesse est palpables dans Eclipse, notez qu'il ne boost AAPT étape, pas d'emballage ad dexing. Si vous utilisez InteliJ, il n'a probablement pas d'une grande aide car il n'a pas besoin de compiler le projet assez souvent.

11voto

Nilzor Points 2544

Je n'ai pas de solution, mais j'ai une explication sur pourquoi il ya une énorme compilation de la différence de temps entre Eclipse et IntelliJ. Parce qu'il y est. Chaque fois que vous comptez sur des modules externes ou des bibliothèques: IntellIJ toujours DEX es modules dépendants. Eclipse semble être la mise en cache d'eux.

Moi aussi j'avais connu cette énorme différence dans un de mes projets. J'ai fait un peu de chronométrage de base des tests et constaté que mon projet qui s'est construit en 40 secondes dans IntellIJ a pris seulement 20 dans Eclipse. Beaucoup de temps a été consacré dans le processus où l'Ide a le statut de l'Exécution de DEX, donc, c'est comment j'ai trouvé cette question. J'ai ensuite cherché à faire un plus approfondi et reproductible expérience et c'est ce que j'ai trouvé.

Projet d'installation

  • Un Bonjour à tout le Monde projet de la Nouvelle Application Android de modèle dans Eclipse.
  • La dépendance sur le AndEngine Open Source Android le Moteur de Jeu du projet*.
  • Eclipse: AndEngine Projet défini comme "Android Bibliothèque". Ajouté à titre de Référence en vertu de l'Android et l'onglet de Projet Requis en vertu de la Java Build Path/Projets-onglet.
  • IntelliJ: AndEngine définie comme "Module". Définir comme la dépendance pour principal module HelloWorld, avec l'exportation case non cochée (non pas que je pense que c'est important).

*) J'aurais pu utiliser n'importe quel module ici, mais c'est un bon exemple puisque c'est un) est assez grand et b) est un Android module, ce qui signifie que je doit le lier comme un projet Android et pas seulement comme un POT, car dbm suggèrent dans un post ci-dessus.

J'ai ajouté le code d'enregistrement dans l' onCreate méthode de MainActivity.java (le démarrage de l'activité de HelloWorld) qui a également appelé à une méthode dans AndEngine qui a également enregistré une ligne. (J'ai modifié le constructeur de SoundManager à la sortie d'une ligne et d'un constructeur à partir d' MainActivity.java). Cela m'a permis de voir où la demande a été fini le déploiement et qu'il avait aussi déployé correctement.

Puis j'ai fait les modifications suivantes chronométré et chacun d'eux trois fois dans chaque IDE:

  • Un: Modifié qu'à l'enregistrement de la ligne dans le module principal
  • A+B: Modifié à la fois l'enregistrement de la ligne dans le module principal et dans le AndEngine module.

Je n'manuel timings avec un standard de stop montre, puis arrondi vers le haut/vers le bas à la seconde près. J'ai fait trois périodes de temps dans chaque cas, et calculé la moyenne arithmétique.

Les résultats:

Graphs of IntellIJ vs Eclipse compile and deploy time

note: je n'ai pas un sous-colonne pour "l'Exécution de DEX" dans Eclipse, car il tout simplement sorties de "faire" ou "rafraîchissant" espace de travail dans l'ensemble du processus de construction.

Lors de l'exécution d'Eclipse, vous pouvez le voir à partir des chiffres que je gagne du temps quand je ne modifier que le module principal qui est comme prévu. Mais dans l'Ide, le temps de compilation est la même dans les deux cas!

Conclusion:

IntelliJ fait beaucoup de unneccessary DEX pratiquent. Si quelqu'un sait si c'est configurable, je pense que nous arriverons à résoudre ce que je crois est la cause racine du problème.

0voto

dbm Points 3814

Parfois, lorsque je ajouter de grandes externe Pots à mon (Eclipse) projet, il semble ralentir le processus de construction de manière significative.

J'ai cependant remarqué qu'au lieu d'ajouter les pots comme d'habitude (Project -> Properties -> Java Build Path -> Libraries -> Add External JARs...), on peut ajouter un utilisateur de la bibliothèque de la place (Project -> Properties -> Java Build Path -> Libraries -> Add Library... -> User Library) et les ajouter à l'externe Pots à cette bibliothèque à la place.

Ce ont jusqu'à présent toujours réussi à résoudre mon grand-Pots-au moment de la construction-questions. Certaines personnes intelligentes, ont m'a aussi expliqué pourquoi il en est ainsi, mais malheureusement je ne me souviens pas vraiment de l'explication. Je n'ai aucune expérience dans IntelliJ - je ne sais pas si c'est applicable dans votre cas, néanmoins, vous pouvez obtenir des idées à partir d'ici...

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