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

        使用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。

猜你喜欢

转载自blog.csdn.net/flyinmind/article/details/131012012