私はthisに似た問題、具体的には、java.lang.OutOfMemoryError: GC overhead limit exceeded
に遭遇しました。ソリューションは、build.gradleにこれを追加するためのようだ:dex memory limitをコマンドラインから設定する方法は?
android {
dexOptions {
javaMaxHeapSize = "4g" // this line specifically
}
}
、私はそのような変更や追加などbuild.gradle、またはプロジェクトフォルダ内のすべてでは何も変更できないこと、の理由から、引き受けます次にプロジェクトがリポジトリから取得されたときに消去されます。コマンドラインオプションや環境変数、あるいは簡単に自動化できる方法などによって、dexにjavaMaxHeapSize
を設定するにはどうすればよいですか?
私はこのように、-P
フラグを使用して試してみた:このbuild.gradleとgradle -Pandroid.dexOptions.javaMaxHeapSize=3g printProps
:残念ながら
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
を(出力しますこの小さなテストのためのプロジェクト)。 printProps
タスクは、正しい値を出力するようにbuild.gradleを変更してjavaMaxHeapSize
を設定するときと同じように、正しい方法をプリントしているようです。
既存の 'build.gradle'を' build-8bittree.gradle'にクローンします。クローンで 'javaMaxHeapSize'を調整してください。あなたのカスタム 'build.gradle'ファイルを使ってビルドするには' gradle -b build-8bittree.gradle'を使います。 – CommonsWare
@CommonsWare悪い提案ではありません。残念なことに、もともと忘れていたことを思い出させました。特に、簡単に自動化できるようにしたいと思っていました。これを一度作成してプロジェクトディレクトリの外に保存すると、 'build-8bittree.gradle'が古くなる危険性があります。毎回確実にこれを再現するように設定することは、これ以上の作業が必要なように思えます。それでも答えをつけて、私はそれをアップヴォートするでしょう。 – 8bittree