为了在进程中运行dex,Gradle守护进程需要一个更大的堆。 它目前大约有910 MB
每次运行我的应用程序时,都会收到这个Gradle错误。 错误是:
为了在进程中运行dex,Gradle守护进程需要一个更大的堆。 它目前大约有910 MB。
要获得更快的构build,请将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 (eg 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
添加你的Build.gradle
android { dexOptions { javaMaxHeapSize "4g" } }
更多信息 – Android Gradle:什么是javaMaxHeapSize“4g”?
2017年6月25日起更新
在谷歌IO 2017年有一些关于这个话题的更新。 现在不推荐在dexOptions上设置标志,所以如果你有下一个类似的东西,你可以删除它。
dexOptions { javaMaxHeapSize "2g" }
- 来源: 加速你的Android Gradle构build
原始答案:
Android Studio 2.1支持使用Gradle共享VM的Dex In Process来提高构build时间。 由于这个原因,有必要增加Gradle守护进程的大小来整合这些Dex进程。
至less有2个内存是必要的,但如果你能负担得起,你可以尝试三个。
gradle.properties。
org.gradle.jvmargs=-Xmx3072m
默认情况下,Java最大堆大小是一个演出,但如果你已经在build.gradle文件上修改它…
build.gradle(App)
dexOptions { javaMaxHeapSize "2g" }
…你必须相应地调整Gradle守护进程的大小(必须更大才能适应堆)。
-
资源
- 官方博客文章Reto Meier
- Android开发人员的官方video
- DexOptions文档。
笔记:
- 请认识到上述数字因机器而异。
简单地把它留在你的gradle.properties上:
org.gradle.jvmargs=-Xmx2048m
你可以看看那篇文章作为参考。
我知道答案为时已晚,但希望对某人有帮助
我已经尝试了很多东西和search很多,但没有为我工作,包括以下和gradle.properties也不适合我的情况
android { dexOptions { javaMaxHeapSize "4g" } }
你也可以尝试添加你的gradle.properties:
org.gradle.jvmargs=-Xmx2048m
在我的情况下,问题是CPU利用率有很多进程运行,而我build立apk我只是杀死像genymotion,Skype,Safari等一些进程,并无效caching/重新启动它适用于我。
在以下目录中修改或创build一个名为gradle.properties的文件。
对于Mac,/用户/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 Charantimathbuild议的那样):
android { dexOptions { javaMaxHeapSize "2g" } }
然后,你可能不得不乱用MultiDex的东西 (你将需要它的大型Android项目)。 但是你的问题可能会更简单。 有一些机会,你编译和包含在你的项目中一些不需要的库。 我在这个小小的项目上遇到了这个问题。 这是我做了什么来解决它:
我从build.gradle
删除了这个:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) }
我手动从应用程序根目录中删除我的生成文件夹。 问题解决了。
这是错误还是警告?
有时这只是一个警告,我可以成功地build立它:
: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): (...)
所以可能阻止成功构build的问题可能是另一个…
我很确定javaMaxHeapSize
和org.gradle.jvmargs
是互斥的。
-
javaMaxHeapSize
是这样做的老方法,dex在进程之外运行。 这将是dex进程的一个论据。 -
org.gradle.jvmargs
是这样做的新方法,在gradle进程中使用dex。 这是整个过程的最大记忆(gradle,包括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
设置为您的项目/机器的正确值即可。
似乎有一个错误:
https://code.google.com/p/android/issues/detail?id=208214
使用com.android.tools.build:gradle:2.1.2
我用dexOptions.javaMaxHeapSize "2g"
设置了org.gradle.jvmargs=-Xmx3415M
,并且错误信息消失了。
在WINDOW'S中打开〜\ Users \ UserName \ .gradle中的gradle.properties,如下所示:更多信息请在这里input链接描述
并确保将其值设置为最小值为4608M,如下所示,以便构build速度更快 org.gradle.jvmargs = -Xmx4608M
一旦你这样做,那么你可以看到在build立你的应用程序的速度日夜的差异…
- 请首先检查项目根目录下的gradle.propertises。
如果没有,请创build一个像这样的文件,然后添加org.gradle.jvmargs = -Xmx1536m
否则如果已经在那里,请增加尺寸。
我面临同样的问题,我已经通过这种方式解决了。
尝试这个
defaultConfig { ... // Enabling multidex support. multiDexEnabled true }