java - एंड्रॉइड स्टूडियो Google JAR फ़ाइल जिसके कारण जीसी ओवरहेड सीमा त्रुटि से अधिक हो गई है




android overhead (4)

मैं ओएस एक्स पर एंड्रॉइड स्टूडियो का उपयोग कर रहा हूं। मुझे यह त्रुटि संदेश मिल रहा है:

विफलता: बिल्ड अपवाद के साथ विफल रहा।

  • क्या गलत हुआ: कार्य के लिए निष्पादन विफल: 'ऐप: preDexDebug'। com.android.ide.common.internal.LoggedErrorException: आदेश चलाने में विफल: / अनुप्रयोग / एंड्रॉइड Studio.app/sdk/build-tools/android-4.4W/dx --dex --output / उपयोगकर्ता / एलेक्स / AndroidStudioProjects / मूक एसएमएस / ऐप / बिल्ड / इंटरमीडिएट्स / प्री-डेक्सड / डीबग / एंड्रॉइड-4.3_आर 2.1-एफआईएसबीएफ 4 डी 1017230e169a4844a9c2195f13060d2.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/

मैंने जेएआर फ़ाइल खींच ली और इसे मेरे प्रोजेक्ट में जोड़ा - जिस परियोजना को मैं बनाने की कोशिश कर रहा हूं वह है:

https://github.com/domi007/silentSMS/

मैं समझता हूं क्योंकि यह मेरा xms और xmx मान बहुत कम है। मैंने उन्हें बढ़ाया:

/ एप्लीकेशन / एंड्रॉइड Studio.app/bin/idea.vmoptions ताकि यह अब कहता है:

-Xms256m
-Xmx1024m

हालांकि, मुझे अभी भी त्रुटि मिलती है। इसके कारण क्या हो सकता है? मूक एसएमएस ऐप के अलावा एक ग्रहण परियोजना है और मुझे एंड्रॉइड स्टूडियो में कोड को पोर्ट करने के अलावा मैंने कुछ भी नहीं बदला है। एंड्रॉइड स्टूडियो स्पॉटिंग त्रुटियों के मामले में - यह नहीं है, और बाकी सब कुछ ठीक दिखता है।


मुझे लगता है कि डेक्सिंग ऑपरेशन की ढेर सीमा बढ़ाने के लिए एक अलग तरीका है। इसे अपने build.gradle फ़ाइल में अपने android क्लोजर में जोड़ें:

dexOptions {
    javaMaxHeapSize "4g"
}

और देखें कि क्या मदद करता है।

( स्कॉट बार्टा से इस जवाब की सौजन्य)


मेरे मामले में, ढेर आकार को बढ़ाने के लिए इस तरह दिखता है:

एंड्रॉइड स्टूडियो 1.1.0 का उपयोग करना

android {
    dexOptions {
        incremental true
        javaMaxHeapSize "2048M"
    }
}

उपरोक्त कोड को अपनी Build.gradle फ़ाइल में रखें।


मैं अपने त्वरित रन को अक्षम करता हूं:

मेनू वरीयताबनाएँत्वरित रन "हॉट स्वैप कोड पर तत्काल रन सक्षम करें"

मुझे लगता है कि यह इंस्टेंट रन है जो बिल्ड को धीमा कर देता है और एक बड़ा आकार pidXXX.hprof फ़ाइल बनाता है जो एंड्रॉइडस्टूडियो जीसी ओवरहेड सीमा पार हो जाता है।

(मेरा डिवाइस एसडीके 19. है)


मैंने टास्केंजर से सभी Java.exe को बंद कर दिया, एंड्रॉइड स्टूडियो को पुनरारंभ किया और यह मेरे लिए काम किया