La soluzione è aumentare la memoria di build di Android.
Man mano che aggiungi più moduli alla tua app, c'è un'incredibile richiesta sul sistema di build Android e le impostazioni di memoria predefinite non funzioneranno. Per evitare OutOfMemoryErrors durante le build di Android, devi rimuovere il commento dall'impostazione della memoria gradle alternativa presente in /android/gradle.properties :
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Puoi trovare gradle.properties nella cartella Android .
PS
Cosa stiamo facendo e perché aiuta?
Vorrei chiarire alcuni termini di base per comprendere l'intera faccenda.
Daemon : - Un daemon è un programma per computer che viene eseguito come processo in background, anziché essere sotto il controllo diretto di un utente interattivo.
Android Studio 2.1 abilita una nuova funzionalità: Dex In Process , che può aumentare notevolmente la velocità di build completamente pulite e migliorare le prestazioni di Instant Run.
Per sfruttare Dex In Process , è necessario modificare il file gradle.properties e aumentare la quantità di memoria allocata alla VM Gradle Daemon di 1 Gb, fino a un minimo di 2 Gb, utilizzando la proprietà org.gradle.jvmargs :
Specifica gli argomenti JVM utilizzati per il processo daemon. L'impostazione è particolarmente utile per modificare le impostazioni di memoria.
org.gradle.jvmargs=-Xmx2048m
Valore predefinito:
-Xmx10248m -XX:MaxPermSize=256m
L' allocazione di memoria predefinita della VM Gradle Daemon è 1 gigabyte, che è insufficiente per supportare dexInProcess, quindi per trarne vantaggio dovrai impostarlo su almeno 2 gigabyte.
Dex in process funziona consentendo l'esecuzione di più processi DEX all'interno di una singola VM condivisa anche con Gradle, motivo per cui è necessario allocare la memoria extra prima che possa essere abilitata: quella memoria verrà condivisa tra Gradle e più processi DEX.
Se hai aumentato javaMaxHeapSize nel tuo file build.gradle a livello di modulo oltre il valore predefinito di 1 gigabyte, dovrai aumentare corrispondentemente la memoria assegnata al Daemon Gradle.
Quando la memoria assegnata è sufficiente, Dex in Process è abilitato per impostazione predefinita, migliorando le prestazioni complessive della build e rimuovendo il sovraccarico dell'avvio di più istanze VM parallele . Il risultato è un miglioramento significativo in tutti i tempi di compilazione, comprese le build Instant Run, incrementali e complete.
Fonte:
https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e
https://rnfirebase.io/#increasing-android-build-memory