2014-12-08 11 views
14

Niedawno uaktualniono z Androida Studio 0.9.2 do 1.0 (w tym wersję 1.0.0 wtyczki Gradle) i mam problem z budowaniem mojego projektu.Nieudana kompilacja Androida Studio 1.0 w dexDebug lub dexRelease

Ilekroć zbudować otrzymuję następujący wyjątek na etapie dexDebug lub dexRelease:

UNEXPECTED TOP-LEVEL ERROR: 
    java.lang.OutOfMemoryError: GC overhead limit exceeded 
     at java.util.HashMap.createEntry(HashMap.java:897) 
     at java.util.HashMap.addEntry(HashMap.java:884) 
     at java.util.HashMap.put(HashMap.java:505) 
     at com.android.dx.rop.type.Type.putIntern(Type.java:857) 
     at com.android.dx.rop.type.Type.intern(Type.java:365) 
     at com.android.dx.rop.type.Type.internClassName(Type.java:415) 
     at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:289) 
     at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:299) 
     at com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:150) 
     at com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124) 
     at com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115) 
     at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:482) 
     at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) 
     at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388) 
     at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) 
     at com.android.dx.command.dexer.Main.processClass(Main.java:704) 
     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673) 
     at com.android.dx.command.dexer.Main.access$300(Main.java:82) 
     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602) 
     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:632) 
     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:505) 
     at com.android.dx.command.dexer.Main.runMultiDex(Main.java:332) 
     at com.android.dx.command.dexer.Main.run(Main.java:243) 
     at com.android.dx.command.dexer.Main.main(Main.java:214) 
     at com.android.dx.command.Main.main(Main.java:106) 

Próbowałem zwiększenie rozmiaru sterty Android Studio do -Xmx4096m ale bezskutecznie. W Androidzie Studio 0.9.2 z wersją 0.14 budynku wtyczki gradle działało poprawnie.

Jest to plik build.gradle mojego projektu:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 
buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.0.0' 
    } 
} 

I to jest plik build.gradle mojego modułu:

apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.android.support:appcompat-v7:21.+' 
    compile 'com.android.support:cardview-v7:21.0.+' 
    compile 'com.android.support:recyclerview-v7:21.0.+' 
    compile 'com.android.support:multidex:1.+' 
    compile 'com.google.android.gms:play-services:6.5.+' 
    compile 'org.jsoup:jsoup:1.8.+' 
    compile 'commons-io:commons-io:2.4' 
    compile 'org.apache.commons:commons-lang3:3.3.2' 
    compile 'com.rometools:rome:1.5.0' 
    compile 'com.google.apis:google-api-services-blogger:v3-rev44-1.19.0' 
    compile 'com.google.http-client:google-http-client-gson:1.19.0' 
    compile 'org.apache.commons:commons-collections4:4.0' 
    compile 'com.parse.bolts:bolts-android:1.1.2' 
    compile files('libs/android-query.0.26.8.jar') 
    compile files('libs/Parse-1.7.1.jar') 
} 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.1" 
    defaultConfig { 
     // Enabling multidex support. 
     multiDexEnabled true 
     minSdkVersion 10 
     targetSdkVersion 21 
     versionCode 1040009 
     versionName "1.4" 

    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-dcrapp.txt' 
      shrinkResources true 
     } 

     debug { 
      minifyEnabled false 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-dcrapp.txt' 
     } 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 


     //Bugfix for Gradle build bug 
     packagingOptions { 
      exclude 'META-INF/LICENSE.txt' 
      exclude 'META-INF/NOTICE.txt' 
     } 

     // Move the tests to tests/java, tests/res, etc... 
     instrumentTest.setRoot('tests') 

     // Move the build types to build-types/<type> 
     // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... 
     // This moves them out of them default location under src/<type>/... which would 
     // conflict with src/ being used by the main source set. 
     // Adding new build types or product flavors should be accompanied 
     // by a similar customization. 
     debug.setRoot('build-types/debug') 
     release.setRoot('build-types/release') 
    } 
} 

task copyMappingFiles(type: Copy) 

copyMappingFiles { 
    from 'build\\outputs\\mapping\\release' 
    into 'mappings\\'+android.defaultConfig.versionCode 
    include('mapping.txt') 
} 

assembleRelease.finalizedBy copyProguardFiles 

Co może być przyczyną tego problemu i jak można go rozwiązać?

Odpowiedz

29

Wygląda Android Studio zabrakło pamięci, spróbuj zwiększyć rozmiar pamięci w AndroidStudio.app/Contents/bin/studio.vmoptions

-Xms256m 
-Xmx1024m 
-XX:MaxPermSize=350m 
-XX:ReservedCodeCacheSize=96m 
-XX:+UseCompressedOops 

zgodnie z sugerowane odpowiedzi w Android Studio - How to increase Allocated Heap Size

Dodatkowo ci może chcieć dodać

dexOptions { 
    javaMaxHeapSize "4g" 
} 

do modułu build.gradle zgodnie Android Studio Google JAR file causing GC overhead limit exceeded error

+3

ALBO w przypadku demona gradle zabrakło pamięci. Sprawdź Menedżera zadań, który je najwięcej pamięci. –

+2

Próbowano już pierwszej opcji. Druga opcja (dexOptions.javaMaxHeapSize) rozwiązała problem. Wygląda na to, że to zabrakło pamięci. Dziękuję Ci bardzo! Teraz zastanawiam się, dlaczego tak się dzieje w pierwszej kolejności. Z wyjątkiem wersji wtyczki gradle nie zmieniłem niczego w samym projekcie. Czy nowa wersja gradle po prostu zużywa więcej pamięci? –

+1

Jest bardzo możliwe, że tak, przeczytałbym dokumentację i uwagi do wydania dla tej wersji gradle @ http://www.gradle.org/documentation –

21

Wygląda na to, że dexing zabrakło pamięci. Spróbuj:

android { 
    dexOptions { 
     javaMaxHeapSize "2048M" 
    } 
} 

dostęp do dodatkowych opcji, patrz dex options w podręczniku użytkownika Gradle Plugin.

+0

To jest klucz –

+0

Pracował dla mnie ...! –

Powiązane problemy