2016-05-16 5 views
0

私は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を設定するときと同じように、正しい方法をプリントしているようです。

+1

既存の 'build.gradle'を' build-8bittree.gradle'にクローンします。クローンで 'javaMaxHeapSize'を調整してください。あなたのカスタム 'build.gradle'ファイルを使ってビルドするには' gradle -b build-8bittree.gradle'を使います。 – CommonsWare

+0

@CommonsWare悪い提案ではありません。残念なことに、もともと忘れていたことを思い出させました。特に、簡単に自動化できるようにしたいと思っていました。これを一度作成してプロジェクトディレクトリの外に保存すると、 'build-8bittree.gradle'が古くなる危険性があります。毎回確実にこれを再現するように設定することは、これ以上の作業が必要なように思えます。それでも答えをつけて、私はそれをアップヴォートするでしょう。 – 8bittree

答えて

1

ステップ#1:あなたの好きなスクリプト環境を使用して、コピーbuild.gradle

build-8bittree.gradleにステップ#2:

android { 
    dexOptions { 
     javaMaxHeapSize = "4g" // this line specifically 
    } 
} 

(あなたは限定されない:あなたの好きなスクリプト環境を使用するには、build-8bittree.gradleに以下を追加します単一のandroidクロージャに、おそらく既にあるかもしれないという事実は、androidクロージャーは制限要因ではありません)

ステップ3:あなたのお気に入りを使用して-bスイッチを使用して、build-8bittree.gradleファイルを使用してgradleビルドを作成します。

関連する問題