OS X에서 Android Studio를 사용하고 있습니다.이 오류 메시지가 나타납니다.
실패 : 예외로 인해 빌드가 실패했습니다.
잘못된 일 : 태스크 ‘: app : preDexDebug’에 대한 실행이 실패했습니다. com.android.ide.common.internal.LoggedErrorException : 명령 실행 실패 : / Applications / Android Studio.app/sdk/build-tools/android-4.4W/dx –dex –output / Users / alex / AndroidStudioProjects / SilentSMS / 앱 / 빌드 / 중간체 / 프리 덱스 / 디버그 /android-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar /Users/alex/AndroidStudioProjects/SilentSMS/app/libs/android-4.3_r2.1.jar
오류 코드 : 3 출력 :
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)
이 라이브러리를 사용하고 있습니다 :
http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/
JAR 파일을 가져 와서 프로젝트에 추가했습니다. 빌드하려는 프로젝트는 다음과 같습니다.
https://github.com/domi007/silentSMS/
내 xms 및 xmx 값이 너무 낮기 때문에 이해합니다. 나는 그들을 증가시켰다 :
/ Applications / Android Studio.app/bin/idea.vmoptions에 다음과 같이 표시됩니다.
-Xms256m
-Xmx1024m
그러나 여전히 오류가 발생합니다. 이 원인은 무엇입니까? silentSMS 앱이 Eclipse 프로젝트이고 코드를 Android Studio로 이식하는 것 외에도 아무것도 변경하지 않았습니다. 안드로이드 스튜디오는 오류를 발견했습니다. 그렇지 않으며 다른 모든 것이 잘 보입니다.
답변
나는 dexing 작업의 힙 한계를 높이는 별도의 방법이 있다고 생각합니다. 파일 의 android
클로저에 이것을 추가 build.gradle
하십시오 :
dexOptions {
javaMaxHeapSize "4g"
}
도움이되는지 확인하십시오.
( Scott Barta의 답변에 대한 아이디어 제공 )
답변
필자의 경우 힙 크기 를 늘리려면 다음과 같이하십시오.
Android Studio 1.1.0 사용
android {
dexOptions {
incremental true
javaMaxHeapSize "2048M"
}
}
위 코드를 Build.gradle 파일 에 넣습니다 .
답변
이 새로운 문제는 최신 버전의 Android에서 발생합니다.
프로젝트 루트 폴더로 이동하여를 열고 gradle.properties
다음 옵션을 추가하십시오.
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
그런 다음 build.gradle
파일 에 다음 변경 사항을 추가 하십시오.
dexOptions {
incremental = true
preDexLibraries = false
javaMaxHeapSize "4g" // 2g should be also OK
}
답변
다음으로 인스턴트 실행을 비활성화합니다.
메뉴 환경 설정 → 빌드 → 즉시 실행 “핫 스왑 코드로 즉시 실행 사용”
빌드를 느리게 만들고 AndroidStudio gc 오버 헤드 한계를 초과하는 큰 크기의 pidXXX.hprof 파일을 만드는 것은 Instant Run이라고 생각합니다.
(내 장치 SDK는 19입니다.)