Mar*_*tti 6 android gradle android-studio android-gradle-plugin
我刚刚更新到Android Studio版本2.0预览版8和gradle插件2.0.0-alpha8.我注意到现在有一个警告,以防堆空间不足以进行dexing.
正如他们在正确的页面中所说的那样(http://tools.android.com/recent)
在2.0.0-alpha8中,我们为此添加了一些自动诊断:如果构建过程太小,我们会切换回内存不足并发出构建警告,说明如何提高Gradle守护程序的大小.(我们还在为alpha8之后的下一个版本进行一些额外的相关改进.)
当我构建我的项目时,我收到以下错误:
要在进程中运行dex,Gradle守护程序需要更大的堆.它目前有3641 MB.对于更快的构建,请将Gradle守护程序的最大堆大小增加到4x以上,如dexOptions.javaMaxHeapSize中所指定.为此,请在项目gradle.properties中的dexOptions.javaMaxHeapSize中指定org.gradle.jvmargs = -Xmx4g.有关更多信息,请参阅 https://docs.gradle.org/current/userguide/build_environment.html
实际上,我连续得到了很多这些.这让我感到惊讶,因为这是我在gradle.properties文件中看到的(在我的项目主目录中)
ANDROID_BUILD_TARGET_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23
ANDROID_BUILD_SDK_VERSION=23
ANDROID_BUILD_MIN_SDK_VERSION=16
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
另外,在我的主模块的build.gradle中,我放了
android {
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
}
Run Code Online (Sandbox Code Playgroud)
所以我不明白构建器/ dexer /编译器获得3641MB值的位置.
构建非常缓慢
我禁用了即时运行,现在事情变得更快.构建48-50秒.我仍然得到相同的错误,但只是一次,而不是连续多次.
我在Linux上,我的ulimit -a如下:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31483
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31483
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Run Code Online (Sandbox Code Playgroud)
另外,这是我的studio.vmoptions文件:https://gist.github.com/MarKco/1ae7918daf867a378a2f 我想这是未经编辑的.我可以有一个自定义的,但我不知道它可能在哪里.
我已经解决了,或者看起来是这样。在发布问题之前我所做的最后一次更改如下:
我有
ANDROID_BUILD_TARGET_SDK_VERSION=22
ANDROID_BUILD_TOOLS_VERSION=22
ANDROID_BUILD_SDK_VERSION=22
ANDROID_BUILD_MIN_SDK_VERSION=16
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
我把它改为
ANDROID_BUILD_TARGET_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23
ANDROID_BUILD_SDK_VERSION=23
ANDROID_BUILD_MIN_SDK_VERSION=16
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它没有自动更改,因为我很长一段时间以来一直使用 23 作为目标版本。无论如何,在我从 22 更改为 23 后,我还没有良好的构建,但这似乎是由于 gradle 同步仍在后台运行。我终止了所有 gradle 项目,保留版本 23 代替 22,禁用即时运行并执行新的同步。起初我一直看到“为了在进程中运行 dex,Gradle 守护进程需要更大的堆”。错误,只是一次,不会像以前那样重复发生。但在一次又一次的构建之后,我发现构建时间越来越短,直到我得到了 10 秒的构建。我想已经解决了 至少我希望如此。
PS最后我根据亨利所说的改变了MaxPermSize,现在我的配置是
ANDROID_BUILD_TARGET_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23
ANDROID_BUILD_SDK_VERSION=23
ANDROID_BUILD_MIN_SDK_VERSION=16
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6653 次 |
| 最近记录: |