Android升级AGP8,启用R8,使用fastjson、log4j,发现无法release,生成了也不能正常使用

在启用R8优化和升级到AGP8后,开发者遇到了MissingClass错误,通过添加-ignorewarnings解决了编译问题,但应用出现日志和fastjson解析异常。禁用R8.fullMode后,问题得到解决,apk大小虽增加但仍然优化良好。
摘要由CSDN通过智能技术生成

        使用Android Studio开发,启用了R8优化(在build.gradle的buildtypes.release中添加了minifyEnabled true),原来能够正常release,可以正常运行。

        自动升级后,使用了AGP8,然后出现一堆Missing Class错误,在项目的proguard-rules.pro文件中添加-ignorewarnings(AGP7之后warnings升级为errors,导致无法继续),总算生成了release版本。生成的apk体积的确小了很多,压缩了一大半。但是使用的时候,首先是logback.SizeAndTimeBasedRollingPolicy的日期无法解析,出现异常:

        FileNamePattern xxxx does not contain a valid DateToken

        不能使用日志,定位就相当麻烦了。fastjson在解析json串时也出现异常,功能极度异常:

        ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

        在proguard-rules.pro中keep两个库的所有类,也不管用。总之,应用已经废了。

        联想到以前也启用R8,优化后的release很正常,所以估计可能是R8开启了什么模式,导致过度优化。查了Android的文档,才知道AGP8默认启用R8.fullmode。根据文档提示,在工程的gradle.properties中添加android.enableR8.fullMode=false,禁用掉fullmode,发现可以了,apk变大了将近1M,完全可以接受,还是比以前的release小将近一半,说明AGP8的确做了很大的改进,即使没有打开fullMode。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值