2011-09-25 6 views
16

Dopo aver aggiunto Google Guava r09 al nostro progetto Android il tempo di costruzione è aumentato in modo significativo, in particolare la fase di generazione DEX. Capisco che la generazione DEX prende tutte le nostre classi + tutti i vasi da cui dipendiamo e li traduce in formato DEX. Guava è un bel vasetto di circa 1.1MBAggiunta di Google Guava al progetto Android - rallenta in modo significativo la build

  1. Può essere la causa del rallentamento della build?
  2. C'è qualcosa che può essere fatto per velocizzare questo?

P.S. Di solito costruisco da Intellij, ma ho anche provato a costruire con Maven - gli stessi risultati.

Grazie

Alex

+0

Ho notato anche questo. Aggiungendo Guava, la mia build richiede ~ 30 secondi invece di ~ 8 secondi. – goncalossilva

+0

Ho separato le classi che uso da Guava. Ciò mi ha aiutato a ridurre i tempi di costruzione. Sfortunatamente, a meno che i ragazzi di Guava decidano di suddividere la biblioteca in moduli più piccoli, questo è l'unico modo in cui lo vedo per accelerare la costruzione dello sviluppo. – AlexV

risposta

12

Per quel che vale, il mio intestino è che questa non è la causa. È difficile impiegare molto tempo a fare qualcosa con solo 1,1 MB di bytecode; Non ho mai notato che dex impiega un tempo significativo. Ma supponiamo che sia il problema per argomento.

Se è abbastanza importante, è possibile ritagliare il Guava .jar per rimuovere interi pacchetti che non si utilizzano. È composto da diversi pezzi che non sono necessariamente tutti correlati.

Non penso che questo acceleri le cose, ma forse vale la pena menzionarlo: se si esegue la build tramite Proguard (l'ottimizzatore ora fornito insieme all'SDK), è possibile rimuovere le classi non utilizzate prima di arrivare a DEX (e, fare un sacco di altre grandi ottimizzazioni sul codice byte). Ma ovviamente questo processo richiede probabilmente più tempo di dexing.

+0

Ho provato a suddividere le classi di cui ho bisogno, ma abbastanza velocemente mi sono ritrovato con 40 classi e conteggio, inoltre è brutto :) La cosa con ProGuard è che non ho trovato un modo per incorporarlo in Intellij build. Grazie. – AlexV

+0

+1 per menzionare Proguard, e vale anche se ci vuole tempo (almeno in questo caso) – Premraj

+1

@AlexV: Non potresti eseguire ProGuard una volta manualmente per scoprire quali classi sono necessarie? Scommetto che non si stanca contando fino a 40 ... – maaartinus

Problemi correlati