Domanda

Proprio ora siamo in una situazione di avere tempi di costruzione 2 minuti 30 secondi per un cambiamento molto semplice. Questo (rispetto a Formica) è incredibilmente lento e sta uccidendo la produttività dell'intera squadra. Sto usando Android Studio e usando la "Usa distribuzione gradle locale". Ho provato a dare più memoria a Gradle:

.

org.gradle.jvmargs= -xmx6096m -xx: maxpermsize= 2048m -xx: + heapdumponoutofmemoryerror -dfile.encoding= UTF-8

Molto più memoria. E sta ancora fornendo errori per la memoria di volta in volta.

.

Eccezione in filo "Pool-1-thread-1" java.lang.outofmemoryerror: il limite del sovraccarico GC ha superato

incredibile. Sto usando l'opzione parallela e il daemon:

.

org.gradle.parallel= true

org.gradle.daemon= true

Non aiuta davvero.

Ho messo i parametri sopra menzionati in ~ / .gradle / Gradle.properties (e ho persino dubitato che Android Studio sta ignorandolo, quindi ho testato - non lo sta ignorando).

Ancora dal terminale ottengo 1:30 Tempo di costruzione vs 2:30 in Android Studio, quindi non sono sicuro di cosa si sbaglia. 1:30 è ancora pazzo rispetto alla formica. Se sai cosa sta facendo Android Studio (o ignorando o riscrivendo come Gradle Config), sarei grato di sapere.

So appena cmd + B (compilazione semplice) è super veloce dopo le modifiche, come 7 secondi. Ma quando si tratta di eseguire l'app, inizia il compito Dexxxxxdebug, che ci sta solo uccidendo. Ho provato a mettere

.
dexOptions {
    preDexLibraries = false
}
.

non aiuta.

Capisco che Gradle probabilmente non è ancora pronto per gli ambienti di produzione, ma sto iniziando a rimpiangere la nostra decisione di muoversi così presto ad esso. Abbiamo un sacco di moduli, che probabilmente è parte del problema, ma non era un problema con la formica.

Qualsiasi aiuto apprezzato, Dan

Alcune ulteriori informazioni su Orari di esecuzione:

DESCRIZIONE DURATA

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
.

Il mangiatore del tempo: : App: Dexdebug 1m16.46s

È stato utile?

Soluzione

Non sono sicuro del motivo per cui Android Studio è più lento della riga di comando, ma è possibile accelerare le tue build, accendendo la dexing incrementale.Nel file di build del tuo modulo, aggiungi questa opzione al blocco android:

dexOptions {
    incremental true
}
.

In quel blocco dexOptions è anche possibile specificare la dimensione del mucchio per il processo Dex, ad esempio:

dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}
.

Queste opzioni vengono prese da un thread sulla mailing list ADT-DV ( https://groups.google.com/forum/# ytopic/adt-dev/R4P-SblL7DQ ) che ha un po 'più di contesto.

Altri suggerimenti

Il nostro team stava affrontando lo stesso problema. Il nostro progetto supera il limite del metodo per Dex (> 65k). Quindi, in un progetto di biblioteca in uscita, mettiamo sotto le opzioni in build.gradle:

dexOptions {
    jumboMode = true
    preDexLibraries = false
}
.

nel nostro progetto build.gradle:

 dexOptions {
    jumboMode = true
//  incremental true
}
.

In precedenza avevamo aumentato vero.Dopo aver commentarlo, prendendo circa 20 anni per correre rispetto a 2mins 30 secondi. Non so che questo potrebbe risolvere il tuo problema.Ma può aiutare con gli altri.:)

Disclaimer: Questa non è una soluzione: è una dichiarazione che non c'è soluzione con fonti di collegamento pertinenti per dimostrarlo .

Poiché tutte le risposte qui non risolvono un problema che si è persistente dal 2014, vado avanti e postare un paio di collegamenti che descrivono un problema molto similer e presentano modifiche specifiche del sistema operativo che potrebbero o non potrebbero aiutare, Dal momento che OP non sembrava specificarlo e le soluzioni variano molto su di loro.

Prima è il EUROSE PREMIO ASONS BUG-Tracker FIRDING ALLA PARALLIZZAZIONE < / a>, con un sacco di cose pertinenti, ancora aperte e ancora con molte persone che si lamentano come la versione 2.2.1. Mi piace il ragazzo che nota la questione (un ID ad alta priottura in questo) incluso "666" non essere una coincidenza. Il modo in cui la maggior parte delle persone descrive i programmi musicali e il movimento del mouse che balbuzzino durante le build si sente come guardare in uno specchio ...

Dovresti notare che le persone segnalano buone cose con il processo di processo per finestre, mentre non vedo che nessuno riporta davvero qualcosa di buono con il renziente o la limitazione della CPU in * Nix Varianti.

questo ragazzo (che afferma che non usa gradle) effettivamente presenta cose molto belle nel chiedere a Ubuntu, che sfortunatamente non fa Lavora nel mio caso.

Ecco un'altra alternativa che limita i fili di Esecuzione Gradle, ma ciò non migliorava davvero nel mio scenario probabilmente dovuto A ciò che qualcuno dice su un altro link su Studio Spawning più istanze di gradle (mentre il parametro influisce solo sul parallelismo di un'istanza).

Nota che tutto questo risale all'originale "666", emissione ad alta priorità ...

Personalmente non ho potuto testare molte delle soluzioni perché lavoro su una macchina di Ubuntu di Gestione (senza root) e non riesco a ottenere Apt-get / Renice, ma posso dirti che ho un I7-4770, 8 GB E un SSD ibrido, e ho questo problema anche dopo un sacco di memoria e Gradle Tweaks nel corso degli anni . È un problema allettante e non riesco a capire come Google non abbia commesso le risorse umane necessarie al progetto Gradle per risolvere qualcosa che è al centro dello sviluppo per la piattaforma più importante che costruiscono.

Una cosa da notare sul mio ambiente è: lavoro in un progetto di studio multi-dipendenza, con circa 10 sottoprogetti, tutti costruendo da soli e riempiendo la pipeline Gradle.

Quando si passa un valore, è possibile aggiungere la lettera "K" per indicare kilobyte, 'm' per indicare i megabyte, o "g" per indicare gigabyte.

'- offline' ha risolto il mio problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top