2011-09-25 15 views
16

Después de agregar Google Guava r09 a nuestro proyecto Android, el tiempo de compilación aumentó significativamente, especialmente la fase de generación DEX. Entiendo que la generación DEX toma todas nuestras clases + todas las jarras de las que dependemos y las traduce al formato DEX. La guayaba es una jarra bastante grande alrededor de 1.1MBAgregar el proyecto Google Guava a Android: ralentiza significativamente la compilación

  1. ¿Puede ser la causa de la desaceleración de la construcción?
  2. ¿Se puede hacer algo para acelerar esto?

P.S. Usualmente construyo desde Intellij, pero también intenté construir con Maven, mismos resultados.

Gracias

Alex

+0

Me he dado cuenta de esto también. Agregar Guava hace que mi compilación tome ~ 30s en lugar de ~ 8s. – goncalossilva

+0

He separado las clases que uso de Guava. Eso ayudó a reducir el tiempo de construcción para mí. Desafortunadamente, a menos que los chicos de Guava decidan dividir la biblioteca en módulos más pequeños, esta es la única forma en que lo veo para acelerar la construcción de desarrollo. – AlexV

Respuesta

12

Por lo que vale la pena, mi tripa es que esta no es la causa. Es difícil tardar mucho tiempo en hacer cualquier cosa con solo 1.1MB de bytecode; Nunca me he dado cuenta de que dex tomaba un tiempo significativo. Pero supongamos que es el problema por el bien de la discusión.

Si es suficiente, probablemente pueda cortar la guayaba .jar para eliminar paquetes enteros que no use. Está compuesto de varias piezas que no están necesariamente relacionadas entre sí.

No creo que esto acelere las cosas, pero quizás valga la pena mencionar: si ejecuta la construcción a través de Proguard (el optimizador ahora incluido con el SDK), puede eliminar las clases no utilizadas antes de llegar a DEX (y, haga un montón de otra gran optimización en el código de bytes). Pero, por supuesto, ese proceso probablemente lleva más tiempo que el dex-ing.

+0

He tratado de cortar las clases que necesito, pero bastante rápido me encontré con 40 clases y contando, además de que es feo :) Lo que pasa con ProGuard es que no he encontrado una forma de insertarlo en la compilación de Intellij. Gracias. – AlexV

+0

+1 por mencionar Proguard, y vale la pena incluso si lleva tiempo (al menos en este caso) – Premraj

+1

@AlexV: ¿No podría ejecutar ProGuard una vez manualmente para averiguar qué clases son necesarias? Apuesto a que no se cansa contando hasta 40 ... – maaartinus

Cuestiones relacionadas