Korzystam z systemu Android Studio w systemie OS X. Otrzymuję ten komunikat o błędzie:
BŁĄD: kompilacja nie powiodła się z wyjątkiem.
Co poszło źle: wykonanie nie powiodło się dla zadania „: app: preDexDebug”. com.android.ide.common.internal.LoggedErrorException: Nie można uruchomić polecenia: / Applications / Android Studio.app/sdk/build-tools/android-4.4W/dx --dex --output / Users / alex / AndroidStudioProjects / SilentSMS / app / build / intermediates / pre-dexed / debug / android-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar /Users/alex/AndroidStudioProjects/SilentSMS/app/libs/android-4.3_r2.1.jar
Kod błędu: 3 wyjście:
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.android.dx.cf.code.RopperMachine.getSources(RopperMachine.java:665)
at com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:288)
at com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:612)
at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:412)
at com.android.dx.cf.code.Simulator.simulate(Simulator.java:94)
at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:782)
at com.android.dx.cf.code.Ropper.doit(Ropper.java:737)
at com.android.dx.cf.code.Ropper.convert(Ropper.java:346)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:282)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
at com.android.dx.command.dexer.Main.processClass(Main.java:682)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
at com.android.dx.command.dexer.Main.access$600(Main.java:78)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:596)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
Korzystam z tej biblioteki:
http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/
Wyciągnąłem plik JAR i dodałem go do mojego projektu - projekt, który próbuję zbudować, to:
https://github.com/domi007/silentSMS/
Rozumiem, że to dlatego, że moje wartości xms i xmx są zbyt niskie. Zwiększyłem je w:
/ Applications / Android Studio.app/bin/idea.vmoptions, dzięki czemu teraz mówi:
-Xms256m
-Xmx1024m
Jednak nadal pojawia się błąd. Co może to być spowodowane? Poza tym, że aplikacja silentSMS jest projektem Eclipse, a ja przenosiłem kod do Android Studio, nic nie zmieniłem. Jeśli chodzi o błędy wykrywania w Android Studio - nie ma, a wszystko inne wygląda dobrze.
4g
jest trochę przesada,2g
jest okOutOfMemoryError
org.gradle.jvmargs=-XX:MaxPermSize=1024m -Xms1024m -Xmx4096m -XX:ReservedCodeCacheSize=1024m
W moim przypadku zwiększenie wielkości sterty wygląda następująco:
Korzystanie z Androida Studio 1.1.0
Umieść powyższy kod w pliku Build.gradle .
źródło
GC overhead limit exceeded
po tym, jak włączyłem Multidexing. Wyjątek byłat com.android.dx.command.dexer.Main.runMultiDex(Main.java:334)
at com.android.dx.util.FixedSizeList.<init>(FixedSizeList.java:38)
górze, a na szczycie stosu byłocom.android.dx.command.dexer.Main.runMultiDex(Main.java:334) at com.android.dx.command.dexer.Main.run(Main.java:244) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)
incremental
: ma to wiele ograniczeń i może nie działać. Używaj ostrożnie.Ten nowy problem jest spowodowany najnowszą wersją Androida.
Przejdź do folderu głównego projektu, otwórz
gradle.properties
i dodaj następujące opcje:Następnie dodaj te zmiany do swojego
build.gradle
pliku:źródło
android.dexOptions.incremental
Właściwość jest przestarzała i nie ma wpływu na proces kompilacji.incremental
został usunięty pod koniec 2018 r.Wyłączam mój Instant Run przez:
Preferencje menu → Kompilacja → Natychmiastowe uruchamianie „Włącz natychmiastowe uruchamianie do kodu wymiany”
Wydaje mi się, że to Instant Run spowalnia kompilację i tworzy plik pidXXX.hprof o dużym rozmiarze, co powoduje przekroczenie limitu narzutu gogle AndroidStudio.
(Mój zestaw SDK urządzenia to 19.)
źródło
Android Studio 3.5.3
Znajdź Ustawienia pamięci (Cmd + Shift + A na Macu lub kliknij Pomoc i zacznij pisać „Ustawienia pamięci”) w Preferencjach / Ustawieniach i zwiększ rozmiar stosu IDE i / lub Rozmiar stosu demona według własnego uznania
źródło
Dodaj to do pliku build.gradle
źródło
Wymusiłem zamknięcie całego Java.exe z taskmanger, zrestartowałem Android Studio i to zadziałało dla mnie
źródło
Dla mnie żadna z odpowiedzi nie zadziałała. Domyślałem się, że bardzo ciężka praca procesora powoduje, że komputer jest gorący. Po zamknięciu programów zużywających duże ilości procesora (np. Chrome) i ochłodzeniu laptopa problem zniknął.
Dla porównania: miałem procesor na poziomie 96% -97%, a użycie pamięci ponad 2 000 000 KB przez proces java.exe (który w rzeczywistości był procesem związanym z gradem).
źródło
Używam
Android Studio 3.4
i jedyną rzeczą, która działała dla mnie, było usunięcie następujących wierszy z mojegobuild.gradle
pliku:Ponieważ
Android Studio 3.4
używaR8
sięfull mode
i nie jest kompatybilny z bezpośrednimProguard
źródło
minifyEnabled true
konfiguracją pro-guard, podczas gdy grad-5.1.1 miał podobne problemy../gradlew wrapper --gradle-version=5.2.1
w moim przypadku edytuję swoje
gradle.properties
:Uwaga: jeśli włączysz
minifyEnabled true
:usuń ten wiersz:
i dodaj te wiersze w ur
build.gradle
,android
blok:mam nadzieję, że to pomoże komuś :)
źródło
4g to trochę przesada, jeśli nie chcesz zmieniać buildGradle, możesz użyć PLIK -> Nieprawidłowe bufory / restart.
To działa dobrze dla mnie ...
źródło
W pewnym momencie
apply plugin: 'com.android.application'
do mojej klasy kompilacji dodano duplikat kopii . Usunięcie duplikatu kopii i upewnienie się, że wszystkie moje wtyczki aplikacyjne były na górze, rozwiązało problem.źródło