Rozwiązaniem jest zwiększenie pamięci kompilacji Androida.
Gdy dodajesz więcej modułów do swojej aplikacji, istnieje niewiarygodne zapotrzebowanie na system kompilacji Androida, a domyślne ustawienia pamięci nie będą działać. Aby uniknąć błędów OutOfMemoryErrors podczas kompilacji Androida, należy odkomentować alternatywne ustawienie pamięci gradle obecne w /android/gradle.properties :
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Możesz znaleźć gradle.properties w folderze Androida .
PS
Co to robimy i dlaczego to pomaga?
Pozwólcie, że wyjaśnię podstawową terminologię, aby zrozumieć całość.
Demon : - Demon to program komputerowy, który działa jako proces w tle, zamiast być pod bezpośrednią kontrolą interaktywnego użytkownika.
Android Studio 2.1 udostępnia nową funkcję: Dex In Process , która może radykalnie zwiększyć prędkość całkowicie czystych kompilacji, a także poprawić wydajność Instant Run.
Aby skorzystać z Dex In Process , musisz zmodyfikować plik gradle.properties i zwiększyć ilość pamięci przydzielonej do maszyny wirtualnej Gradle Daemon o 1 GB, do co najmniej 2 GB, za pomocą właściwości org.gradle.jvmargs :
Określa argumenty maszyny JVM używane w procesie demona. To ustawienie jest szczególnie przydatne przy dostosowywaniu ustawień pamięci.
org.gradle.jvmargs=-Xmx2048m
Domyślna wartość:
-Xmx10248m -XX:MaxPermSize=256m
Domyślna alokacja pamięci maszyny wirtualnej Gradle Daemon to 1 gigabajt - co jest niewystarczające do obsługi dexInProcess, więc aby skorzystać, musisz ustawić ją na co najmniej 2 gigabajty.
Dex in process działa, umożliwiając uruchamianie wielu procesów DEX w ramach jednej maszyny wirtualnej, która jest również współdzielona z Gradle, dlatego przed włączeniem należy przydzielić dodatkową pamięć - ta pamięć będzie współdzielona między Gradle i wieloma procesami DEX.
Jeśli zwiększyłeś javaMaxHeapSize w pliku build.gradle na poziomie modułu powyżej domyślnego 1 gigabajta, będziesz musiał odpowiednio zwiększyć pamięć przypisaną do demona Gradle.
Gdy jest wystarczająco dużo pamięci przypisanej Dex in Process, jest domyślnie włączone, co poprawia ogólną wydajność kompilacji i usuwa obciążenie związane z uruchamianiem wielu równoległych wystąpień maszyn wirtualnych . Rezultatem jest znaczna poprawa wszystkich czasów kompilacji, w tym kompilacji natychmiastowych, przyrostowych i pełnych.
Źródło:
https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e
https://rnfirebase.io/#increasing-android-build-memory