当gradle 版本在5.1.1及其以上(或许以下某个版本就支持了)使用了新的混淆、压缩编译方法——R8。
在本地操作的时候,这没有任何问题,当使用自动化部署打包的时候——JENKINS。问题出来了,在R8编译这一过程就报错:
Expiring Daemon because JVM Tenured space is exhausted
Daemon will be stopped at the end of the build after running out of JVM memory
OK,暂且认为是jvm空间不够,好我给扩大点
org.gradle.jvmargs=-Xmx2048m
依然这个地方,依然一样的错误信息。
不够?我再来。4G够不够?不够。10G够不够?不够。坑爹呢?
然后我就按照build过程中给的提示:
R8 is the new Android code shrinker. If you experience any issues, please file a bug at
https://issuetracker.google.com, using ‘Shrinker (R8)’ as component name. You can
disable R8 by updating gradle.properties with ‘android.enableR8=false’.
Current version is: 1.4.77 (build b74371231cb896b02f83285efb055b7c00ff64d8 from go/r8bot (luci-r8-ci-archive-0-eqqf)).
android.enableR8=false
好了,现在能编译通过了。但是未来呢?
还有另一个方法:
buildTypes里的编译环境全都不要混淆,like this:
minifyEnabled false
zipAlignEnabled false
shrinkResources false
好了,编译也通过了,但是…坑爹呢?!!!
然后按照提示来到了官网提交问题(bug):issue地址
果不其然,我被伟大的墙卡住了。。。
先就这样吧。
哈哈哈哈哈哈哈
具体修改为:
在使用jenkins打包的时候,本地gradle.properties不会被用于jenkins(当然gradle使用的项目中的忽略)
那么gradle.properties的参数就会自行在jenkins中配置,就jenkins的项目工程中有一个选择gradle版本和参数配置,在这里就需要加大内存或其他操作了。