我遇到类似于this的问题,特别是当gradle运行dex时java.lang.OutOfMemoryError: GC overhead limit exceeded
。解决方案似乎是将其添加到build.gradle:
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
时,它会打印出正确的值。
答案 0 :(得分:1)
步骤1:使用您喜欢的脚本环境,将build.gradle
复制到build-8bittree.gradle
步骤2:使用您喜欢的脚本环境,将以下内容附加到build-8bittree.gradle
:
android {
dexOptions {
javaMaxHeapSize = "4g" // this line specifically
}
}
(您不限于单android
个闭包,因此可能已经存在android
闭包的事实不是限制因素)
步骤3:使用您喜爱的脚本环境,使用-b
开关使用自定义gradle
文件构建build-8bittree.gradle