UNEXPECTED TOP-LEVEL ERROR: sc8825 오류

2633 단어
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: GC overhead limit exceeded
    at com.android.dx.dex.code.OutputFinisher.findExpandedOpcodeForInsn(OutputFinisher.java:525)
    at com.android.dx.dex.code.OutputFinisher.calculateReservedCount(OutputFinisher.java:466)
    at com.android.dx.dex.code.OutputFinisher.reserveRegisters(OutputFinisher.java:402)
    at com.android.dx.dex.code.OutputFinisher.finishProcessingAndGetList(OutputFinisher.java:358)
    at com.android.dx.dex.code.DalvCode.finishProcessingIfNecessary(DalvCode.java:108)
    at com.android.dx.dex.code.DalvCode.getInsns(DalvCode.java:185)
    at com.android.dx.dex.file.CodeItem.place0(CodeItem.java:223)
    at com.android.dx.dex.file.OffsettedItem.place(OffsettedItem.java:242)
    at com.android.dx.dex.file.MixedItemSection.placeItems(MixedItemSection.java:312)
    at com.android.dx.dex.file.DexFile.toDex0(DexFile.java:543)
    at com.android.dx.dex.file.DexFile.toDex(DexFile.java:216)
    at com.android.dx.command.dexer.Main.writeDex(Main.java:574)
    at com.android.dx.command.dexer.Main.run(Main.java:218)
    at com.android.dx.command.dexer.Main.main(Main.java:174)
    at com.android.dx.command.Main.main(Main.java:95)
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex] error 3

해결 방법:
방법 1:
자바 명령으로 자바 가상 머신의 크기를 지정하여 컴파일해야 할 물건을 먼저 컴파일하는 데 몇 분이 걸릴 수 있습니다.
      java -Xms3550M -Xmx3550M -jar/home/test/4.0/out/host/linux-x86/framework/dx.jar --dex --output=out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex --core-library out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes.jar가 이걸 실행하고 나면다시 make하면 돼요. 이 가방은 이미 make가 나왔기 때문에 다시 make를 할 때 다시 컴파일하지 않을 거예요.
이 방법은make 오류가 발생한 후에 상술한 명령을 실행한 다음make 명령을 실행할 수 있습니다
방법 2:
정의를 수정합니다.mk 파일 이 파일은build/core/디렉터리에 있습니다
변수 수정:transform-classes.jar-to-dex의 -JXms16M -JXmx1024M 값
코드의 변수 정의:
define transform-classes.jar-to-dex @echo "target Dex: $(PRIVATE_MODULE)"@mkdir -p $(dir $@) $(hide) $(DX)\    $(if $(findstring windows,$(HOST_OS)),,-JXms16M -JXmx1024M)\    --dex --output=$@\    $(if $(NO_OPTIMIZE_DX),\        --no-optimize)\    $(if $(GENERATE_DEX_DEBUG),\        --debug --verbose\        --dump-to=$(@:.dex=.lst)\        --dump-width=1000)\    $(PRIVATE_DX_FLAGS)\    $< endef
- JXms16M - JXmx1024M 을 적절한 값으로 수정
제 기계는 메모리가 32G입니다. - JXms16M - JXmx1024M - JXmx2048M
구체적인 값의 크기는 구체적인 기계의 메모리에 따라 정해야 하며, 메모리가 너무 적으면 설정한 값이 크면 문제가 생길 수 있다.

좋은 웹페이지 즐겨찾기