2014-12-08 16 views
14

Gần đây tôi đã nâng cấp từ Android Studio 0.9.2 lên 1.0 (bao gồm phiên bản 1.0.0 của plugin Gradle) và tôi đang gặp sự cố với việc tạo dự án của mình.Android Studio 1.0 không thành công tại dexDebug hoặc dexRelease

Bất cứ khi nào tôi xây dựng tôi nhận được ngoại lệ sau đây ở bước dexDebug hoặc 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) 

tôi đã cố gắng tăng kích thước đống Android Studio để -Xmx4096m nhưng vô ích. Trong Android Studio 0.9.2 với phiên bản 0.14 của tòa nhà plugin gradle hoạt động tốt.

Đây là tập tin build.gradle của dự án của tôi:

// 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' 
    } 
} 

Và đây là file build.gradle của mô-đun của tôi:

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 

gì có thể là nguyên nhân của vấn đề này và làm thế nào nó có thể được giải quyết?

Trả lời

29

Hình như Android Studio chạy ra khỏi bộ nhớ, hãy thử tăng kích thước bộ nhớ trong AndroidStudio.app/Contents/bin/studio.vmoptions

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

theo gợi ý từ câu trả lời trong Android Studio - How to increase Allocated Heap Size

Ngoài ra bạn có thể muốn thêm

dexOptions { 
    javaMaxHeapSize "4g" 
} 

để mô-đun của bạn build.gradle theo Android Studio Google JAR file causing GC overhead limit exceeded error

+3

HOẶC trình nền màu đã hết bộ nhớ. Kiểm tra Task Manager, người ăn nhiều bộ nhớ nhất. –

+2

Đã thử tùy chọn đầu tiên. Tùy chọn thứ hai (dexOptions.javaMaxHeapSize) đã giải quyết vấn đề. Dường như nó là deamon gradle hết bộ nhớ. Cảm ơn nhiều! Bây giờ tôi tự hỏi tại sao nó lại xảy ra ngay từ đầu. Ngoại trừ phiên bản plugin gradle tôi đã không thay đổi bất cứ điều gì trong bản thân dự án. Phiên bản gradle mới có sử dụng nhiều bộ nhớ hơn không? –

+1

Rất có thể nó, tôi sẽ đọc tài liệu và phát hành ghi chú cho phiên bản này của gradle @ http://www.gradle.org/documentation –

21

Dường như việc dexing hết bộ nhớ. Thử:

android { 
    dexOptions { 
     javaMaxHeapSize "2048M" 
    } 
} 

Để biết thêm tùy chọn, hãy xem dex options trong Hướng dẫn sử dụng plugin Gradle.

+0

Đây là chìa khóa –

+0

Làm việc cho tôi ...! –

Các vấn đề liên quan