2011-09-25 6 views
16

Après avoir ajouté Google Guava r09 à notre projet Android, le temps de construction a considérablement augmenté, en particulier la phase de génération DEX. Je comprends que la génération DEX prend toutes nos classes + tous les pots dont nous dépendons et les traduit au format DEX. La goyave est un gros pot d'environ 1,1MBAjouter Google Guava au projet Android - ralentit considérablement la construction

  1. Peut-être la cause du ralentissement de construction?
  2. Y a-t-il quelque chose qui peut être fait pour accélérer cela?

post-scriptum Habituellement, je construis à partir d'Intellij, mais j'ai aussi essayé de construire avec Maven - mêmes résultats.

Merci

Alex

+0

Je l'ai remarqué aussi. Ajouter Goyava fait que ma construction prenne ~ 30s au lieu de ~ 8s. – goncalossilva

+0

J'ai séparé les classes que j'utilise de Guava. Cela a aidé à réduire le temps de construction pour moi. Malheureusement, à moins que les gars de Guava ne décident de diviser la bibliothèque en modules plus petits, c'est la seule façon que je vois pour accélérer la construction du développement. – AlexV

Répondre

12

Pour ce que ça vaut, mon instinct est que ce n'est pas la cause. Il est difficile de prendre le temps de faire quelque chose avec un simple 1,1 Mo de bytecode; Je n'ai jamais remarqué que Dex prenait un temps significatif. Mais supposons que ce soit le problème pour l'argumentation.

Si cela importe assez, vous pourriez probablement découper lede la goyave pour supprimer des paquets entiers que vous n'utilisez pas. Il est composé de plusieurs pièces qui ne sont pas nécessairement toutes interdépendantes. Je ne pense pas que cela va accélérer les choses, mais peut-être vaut la peine de mentionner: si vous exécutez la construction via Proguard (l'optimiseur maintenant fourni avec le SDK), il peut supprimer les classes inutilisées avant DEX (et, faites un tas d'autre grande optimisation sur le code de byte). Mais bien sûr, ce processus prend probablement plus de temps que dex-ing.

+0

J'ai essayé de découper les classes dont j'ai besoin, mais je me suis vite retrouvé avec 40 classes et en plus, c'est moche :) La chose avec ProGuard est que je n'ai pas trouvé le moyen de l'intégrer dans Intellij build. Merci. – AlexV

+0

+1 pour mentionner Proguard, et cela vaut la peine même si cela prend du temps (au moins dans ce cas) – Premraj

+1

@AlexV: Ne pourriez-vous pas lancer ProGuard une fois manuellement pour savoir quelles classes sont nécessaires? Je parie que ça ne se fatigue pas en comptant jusqu'à 40 ... – maaartinus

Questions connexes