Android stdio gradle更新后 项目出错 无法编译

gradle更新后项目出错。

我的版本:

android studio 3.0.1

gradle 4.1

 

查看错误报告可知

Error:Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at https://docs.gradle.org/3.3/userguide/gradle_daemon.html
Please read the following process output to find out more:
-----------------------
Error occurred during initialization of VM
Could not reserve enough space for 1572864KB object heap

错误是在VM虚拟机初始化时候出错的。是堆分配时内存不足导致

此时打开项目的gradle.properties 文件

可以看到其中有一个关于jvm的分配设置

将其中的 org.gradle.jvmargs=-Xmx1536m

改小一些,即可成功编译

如 org.gradle.jvmargs=-Xmx512m(大小是针对自己的电脑内存情况而言)

ps:-Xmx:JVM 允许分配的最大堆内存

还有:

-Xms:JVM 起始分配的堆内存
-XX:MaxPermSize:JVM 最大允许分配的非堆内存
-XX:ReservedCodeCacheSize:JIT 编译后的最大代码缓存

 

这一个修改只是只是针对这一个项目而言,对于其他项目很可能还是有这样的错误,


一劳永逸的修改,可以到如下的安装目录下,写配置文件,解决。

其中有多种方法。

介绍两种:

1.例如,Windows系统中,打开其中的.gradle目录,新建gradle.properties文件。

/home/用户名/.gradle/ (Linux)
/Users/用户名/.gradle/ (Mac)
C:\Users\用户名\.gradle (Windows)

输入:

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

保存后,以后所有新建的项目都会以此为默认配置

 

新建项目后,可以看到项目中的gradle.properties中,并不是在配置文件中的值,仍然是以前的值。但是却可以编译通过了。

这是因为新建的配置文件的值 是一种覆盖。

配置文件中org.gradle.jvmargs=-Xmx1024m 覆盖了 当前项目文件中设置。

(其实,这个涉及到android studio 调优的知识,更细节的可以看篇文章。8个技巧倍速提升Gradle构建

2.另外一个方法,则可以修改 项目的gradle.properties的值

打开androidstudio安装路径:\android-studio\plugins\android\lib\templates\gradle-projects

可以看到MewAndroidModule、NewAndroidProject 等文件夹。进入后找到root路径

打开gradle.properties.ftl文件,可以看到

修改到合适的值后,保存即可。

ps:这个目录下有很多值得探索的地方。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章