前段时间我的打包脚本在编译打包的时候卡住了,而且卡住之后就再也不会继续打包了,具体的现象如下:
:solitaire:transformClassesWithJarMergingForFullflavorRelease UP-TO-DATE
:solitaire:collectFullflavorReleaseMultiDexComponents UP-TO-DATE
:solitaire:transformClassesWithMultidexlistForFullflavorRelease UP-TO-DATE
building %81 :solitaire:transformClassesWithDexForFullflavorRelease
而且后面会报出
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
和
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process
的错误,竟然和内存有关系,可是我明明给他分配了3g的内存了呀,总不能再给他分配5g的内存吧,痛定思痛,决定好好想一想问题出在什么地方。 回忆了一下,这个问题是在我们又增加了一个应用和多个module库之后出现的(ps:由于应用的相似性,多个应用是放在一个android studio工程下),于是去看了一下编译设置,在gradle.properties中发现了这么一项
org.gradle.parallel=true
开启了并行编译设置,又去看了一下说明,官方建议只在项目之间不相关联的时候开启,由于刚开始的时候我们的项目还比较小就随手打开了(我的锅,浪费了name多时间来查找问题。。。) 所以保险起见,一定要关上并行编译!
org.gradle.parallel=false
org.gradle.parallel=false
org.gradle.parallel=false
重要的事情说三遍。。。