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?
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. –
Đã 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? –
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 –