我一直遇到类似于this的问题,特别是当gradle运行dex时java.lang.OutOfMemoryError: GC overhead limit exceeded
。该解决方案似乎是把它添加到的build.gradle:如何从命令行设置dex内存限制?
android {
dexOptions {
javaMaxHeapSize = "4g" // this line specifically
}
}
现在,假设,至于原因,我不能修改的build.gradle,或在任何项目中的所有文件夹中,例如更改或添加会在下次从存储库中取出项目时将被清除。如何通过命令行选项或环境变量或某种可轻松实现自动化的此类方法来设置dex的javaMaxHeapSize
?
我使用-P
标志试过了,是这样的:gradle -Pandroid.dexOptions.javaMaxHeapSize=3g printProps
本的build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.+'
}
}
apply plugin: 'android'
android {
compileSdkVersion 15
buildToolsVersion "23.0.2"
dexOptions {
jumboMode = true
}
}
task printProps {
println "android.dexOptions: " + android.dexOptions.getJavaMaxHeapSize()
}
不幸的是,它只是打印出android.dexOptions: null
(失败,因为我还没有建立完整的Android之前这个小测试项目)。 printProps
任务似乎打印正确的方法,因为当我改变build.gradle设置javaMaxHeapSize
时,它打印出正确的值。
克隆现有'build.gradle'到'build-8bittree.gradle'。调整克隆中的'javaMaxHeapSize'。使用'gradle -b build-8bittree.gradle'来建立自定义的'build.gradle'文件。 – CommonsWare
@CommonsWare不错的建议。不幸的是,它让我想起了一些我最初忘记提及的东西,特别是我希望能够轻松自动化它。创建一次并将其存储在项目目录之外会造成“build-8bittree.gradle”过期的风险。每次设置可靠地重新创建它听起来像比这更应该是更多的工作。不过,请做出答案,我会加快行动。 – 8bittree