web-dev-qa-db-ja.com

dexをインプロセスで実行するには、Gradleデーモンに大きなヒープが必要です。現在、約910 MBです。

アプリを実行するたびにこのGradleエラーが発生します。エラーは次のとおりです。

Dexをインプロセスで実行するには、Gradleデーモンに大きなヒープが必要です。現在、約910 MBです。

ビルドを高速化するには、Gradleデーモンの最大ヒープサイズを2048 MB以上に増やします。

これを行うには、プロジェクトgradle.propertiesでorg.gradle.jvmargs = -Xmx2048Mを設定します。詳細については、 https://docs.gradle.org/current/userguide/build_environment.html を参照してください

これが私のbuild.gradle(Module:app)ファイルです:

apply plugin: 'com.Android.application'

    Android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"

        defaultConfig {
            applicationId "mobileapp.tech2dsk"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
            }
        }
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.Android.support:appcompat-v7:23.3.0'
        compile 'com.Android.support:design:23.3.0'
    }

そして、ここに私のbuild.gradle(Project)ファイルがあります:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ここに私のgradle.propertiesファイルがあります:

# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
71

Build.gradleに追加します

Android {
 dexOptions {
    javaMaxHeapSize "4g"
  }
}

詳細- Android Gradle:javaMaxHeapSize "4g"とは?

50

2017年6月25日から更新

Google IO 2017では、このトピックに関するいくつかの更新がありました。 dexOptionsにフラグを設定することは推奨されないため、次のようなものがある場合は削除できます。

dexOptions {
   javaMaxHeapSize "2g"
}

元の答え:

Android Studio 2.1は、VMをGradleと共有するDex In Processを有効にして、ビルド時間を改善します。このため、これらのDexプロセスを組み込むには、Gradleデーモンのサイズを大きくする必要があります。

少なくとも2ギガのメモリが必要ですが、余裕があれば3ギガで試すことができます。

gradle.properties。

org.gradle.jvmargs=-Xmx3072m

デフォルトでは、Java最大ヒープサイズは1ギガバイトですが、build.gradleファイルで変更した場合は...

build.gradle(アプリ)

dexOptions {
   javaMaxHeapSize "2g"
}

...それに応じてGradleデーモンのサイズを変更する必要があります(ヒープに合わせて大きくする必要があります)。

ノート:

  • 上記の数値はマシンごとに異なることに注意してください。
43
Sotti

Gradle.propertiesにそのままにしてください:

org.gradle.jvmargs=-Xmx2048m 

参照としてその記事 を見ることができます

21
lujop

私は答えには遅すぎることを知っていますが、それが誰かに役立つことを願っています

私はたくさんのことを試してみましたが、私にとっては何も機能しませんが、フォローやgradle.propertiesも私の場合は機能しません

Android {
  dexOptions {
    javaMaxHeapSize "4g"
  }
}

また、gradle.propertiesでAddを試すことができます:

org.gradle.jvmargs=-Xmx2048m 

私の場合、問題はCPU使用率です.apkを構築している間に多くのプロセスが実行されていますが、genymotion、skype、safariなどのいくつかのプロセスを強制終了し、キャッシュを無効化/再起動するだけで動作します。

13
Ajay Pandya

次のディレクトリでgradle.propertiesという名前のファイルを変更または作成します。

Macの場合、/ Users/USER_NAME/.gradle/gradle.properties

Linuxの場合、/ home/USER_NAME/.gradle/gradle.properties

Windowsの場合、C:\ Users\USER_NAME.gradle\gradle.properties

上記の変更を適用します。最後に、次のようになります。

org.gradle.daemon=true

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true

org.gradle.configureondemand=true

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

このリンクを参照してください https://tausiq.wordpress.com/2015/02/24/Android-speed-up-gradle-build-process-in-Android-studio/

このようにbuild.gradleを変更できます(Veeresh Charantimathが提案したように):

Android {
 dexOptions {
    javaMaxHeapSize "2g"
 }
}

そして、 MultiDex stuff (大きなAndroidプロジェクトに必要になる)をいじる必要があるかもしれません。 しかし、あなたの問題はより単純かもしれません。コンパイルして、不要なライブラリをプロジェクトに含める可能性があります。私の小さなプロジェクトでこの問題に直面しました。これを修正するために私がしたことは次のとおりです。

これをbuild.gradleから削除しました:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

そして、アプリケーションルートからビルドフォルダーを手動で削除しました。問題が解決しました。

2
Andrei

javaMaxHeapSizeorg.gradle.jvmargsは相互に排他的であると確信しています。

  • javaMaxHeapSizeは古い方法であり、dexはプロセスの外部で実行されます。これは、dexプロセスの引数になります。
  • org.gradle.jvmargsは、gradleプロセス内にdexを使用する新しい方法です。これは、プロセス全体(dexを含む段階的)の最大メモリです。

警告が言うことは、org.gradle.jvmargsは> = javaMaxHeapSize (what you used previously for dex) + 512M (an estimation of what's needed for gradle own needs)でなければならないということです。

したがって、処理中にdexを使用する場合(高速)、javaMaxHeapSizeを気にする必要はありません。 org.gradle.jvmargsをプロジェクト/マシンの正しい値に設定するだけです。

1
mbonnin

エラーまたは警告ですか?

時々これは単なる警告であり、私はそれをうまく構築することができます:

:transformClassesWithDexForDebug
To run dex in process, the Gradle daemon needs a larger heap.
It currently has approximately 910 MB.
For faster builds, increase the maximum heap size for the Gradle daemon to more than 2048 MB.
To do this set org.gradle.jvmargs=-Xmx2048M in the project gradle.properties.
For more information see https://docs.gradle.org/current/userguide/build_environment.html
:mergeDebugJniLibFolders UP-TO-DATE
:transformNative_libsWithMergeJniLibsForDebug
:processDebugJavaRes UP-TO-DATE
:transformResourcesWithMergeJavaResForDebug
:validateDebugSigning
:packageDebug
:zipalignDebug
:assembleDebug
:cdvBuildDebug

BUILD SUCCESSFUL

Total time: 3 mins 44.991 secs
Built the following apk(s):
(...)

ビルドの成功を妨げる可能性のある問題は、別の問題かもしれません...

1
Pedro Reis

WINDOW'Sで、以下に示すように〜\ Users \UserName\。gradleからgradle.propertiesを開きます:詳細については リンクの説明をここに入力してください

enter image description here

そして、ビルドを高速化するために、以下に示すように、その値を4608Mに最小値に設定してくださいorg.gradle.jvmargs=-Xmx4608M

これを行うと、アプリのビルド速度の昼夜の違いを確認できます...

1
Vincy

たとえば、プロジェクトルートのgradle.propertiesにあります。

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m

0
R01010010
  • 最初にプロジェクトのルートディレクトリでgradle.propertisesを確認してください。

不在の場合は、このようなファイルを作成してから、org.gradle.jvmargs = -Xmx1536mを追加してください

それ以外の場合は、既に存在する場合、サイズを増やしてください。

私は同じ問題に直面しましたが、私はこの方法で解決しました。

0
Hafizur Rahman

バグがあるようです:

https://code.google.com/p/Android/issues/detail?id=208214

com.Android.tools.build:gradle:2.1.2を使用してorg.gradle.jvmargs=-Xmx3415MdexOptions.javaMaxHeapSize "2g"を設定すると、エラーメッセージが消えました。

0
jenglert