gpt4 book ai didi

Android Studio 1.0 在 dexDebug 或 dexRelease 构建失败

转载 作者:可可西里 更新时间:2023-11-01 18:49:34 27 4
gpt4 key购买 nike

我最近从 Android Studio 0.9.2 升级到 1.0(包括 Gradle 插件的 1.0.0 版),我在构建我的项目时遇到了问题。

每当我构建时,我都会在 dexDebug 或 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)

我尝试将 Android Studio 的堆大小增加到 -Xmx4096m 但无济于事。在 Android Studio 0.9.2 中,gradle 插件构建的版本 0.14 运行良好。

这是我项目的build.gradle文件:

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

这是我的模块的 build.gradle 文件:

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

这个问题可能是什么原因造成的,如何解决?

最佳答案

看起来 Android Studio 内存不足,请尝试在 AndroidStudio.app/Contents/bin/studio.vmoptions 中增加内存大小

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

根据 Android Studio - How to increase Allocated Heap Size 中的答案建议

另外你可能想添加

dexOptions {
javaMaxHeapSize "4g"
}

按照 Android Studio Google JAR file causing GC overhead limit exceeded error 到你的模块 build.gradle

关于Android Studio 1.0 在 dexDebug 或 dexRelease 构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27367071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com