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

android 混淆 很久没用过混淆功能了,因为之前的包都使用第三方加固了,而且项目开发好几年了,突然要混淆也很麻烦。换了家公司后,感觉还是得混淆代码才行,不然直接暴露源码也太不行了。 阅读详情
AI摘要

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

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

ProGuard与R8:Kotlin代码混淆与压缩技巧 在 Android 开发中,ProGuard 和 R8 是用于代码压缩、优化和混淆的关键工具,尤其对 Kotlin 代码的处理至关重要。ProGuard 由 Guardsquare 开发,构建速度较慢,需额外配置 Kotlin 支持;而 R8 由 Google 开发,构建速度更快,原生支持 Kotlin 特性,并兼容 ProGuard 规则。基础配置通过在 build.gradle 中启用 minifyEnabled 和 shrinkResources 实现。针对 Kotlin 代码,需特别保留数据类、反射 阅读详情

相关推荐

Android AGP8升级踩坑实录:R8 fullMode导致fastjson/log4j异常的全套解决方案

本文详细解析了Android AGP8升级中R8 fullMode导致的fastjson和log4j兼容性问题,提供了从全局关闭优化到精准定制ProGuard规则的全套解决方案。通过对比不同策略的优缺点,帮助开发者在保持应用体积优化的同时确保关键库的稳定运行,特别适合面临AGP8升级挑战的Android开发者。

sony5的博客 953

Simeck算法流程

算法流程 paper在此:https://eprint.iacr.org/2015/612.pdf x ⋘\lll⋘ c denotes the cyclic shift of x to the left by c bits. x & y is the bitwise AND of x and y. x⊕yx \oplus yx⊕y is the exclusive-or (XOR) of x and y. github代码在此:https://github.com/bozhu/Simeck

Simp123 1074

ubuntu18.04安装Nvidia显卡驱动后黑屏及网络、蓝牙驱动消失的解决方案

ubuntu18.04安装Nvidia显卡驱动后黑屏及网络、蓝牙驱动消失的解决方案

weixin_40735291的博客 6619

HDMI2.1/eDP TX接口设计:

HDMI2.1向下兼容,HDMI2.1工作在FRL模式,HDMI2.0工作在TMDS模式。因此采用AC耦合电压模式驱动器。一般采用220nF,封装建议0201。,但是协议要求,往 CEC 管脚通过 27K 电阻加 3.3V 电压,漏电不允许超过。NOTE:如果只需要支持 HDMI2.0 及以下模式时, MOS管也不能省掉。DDC_SCL/DDC_SDA 协议规定是。HDMI2.0模式:配置为高,MOS导通。HDMI2.1模式:配置为低,MOS不导通。,必须增加电平转换电路。形成直流偏置,大约3V。

qq_40010777的博客 7862

OpenBmc开发11:添加传感器(I2C)

1 查看传感器信息 通过qemu以本地端口映射方式运行编译后的镜像,访问bmcweb页面的网址是:https://localhost:2443/,如果想用IP地址启动请参考:openbmc开发4:启动运行编译镜像。(这里以网桥方式启动,以ip地址方式访问BMC) 输入用户名和密码,密码是:0penBmc(第一个是数字)。 选择Health,然后点击Sensor,可以看到传感器信息。 2 查看传感器配置文件 进入meta-live/meta-test/recipes-phosphor/...

master 1万+

别再只盯着YOLOv8了!手把手带你用PaddleDetection的PP-YOLOE+搞定你的第一个检测项目

本文介绍了PP-YOLOE+在目标检测领域的优势与应用实践,对比YOLOv8展示其在精度、速度和部署便利性上的突破。通过详细的代码示例和实战教程,帮助开发者快速上手PaddleDetection工具链,实现产业级目标检测项目,提升开发效率。

weixin_42701915的博客 185

【WRF理论】配置诊断变量 &diags

【WRF理论】配置诊断变量 &diags

WW、forever的博客 137

Lammps实现甲烷与水的竞争吸附-循环不同气体分子

Lammps实现甲烷与水的竞争吸附

Rockyoung 5375

Google Earth Engine 红树林制图方法的代码(三个模块)

谷歌地球引擎红树林制图方法(GEM)提供了一种直观、易用且可复制的工具,适用于广泛的非专业沿海管理者和决策者。该工具全面回顾并整合了相关的红树林遥感文献,并利用云计算的力量,包括简化的基于图像的潮汐校准方法。GEM 可免费用于非营利用途,并在 GEE 中运行,包含全面且详细注释的代码。GEM 专门设计用于绘制全球范围内多日期红树林分布并量化其动态变化。目前可用的工具和方法未能充分利用沿海管理者通常持有的丰富地方专业知识——GEM 致力于填补这一空白,帮助结合地方专业知识与 GEE 的云计算能力。

此星光明博客 560

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: Android实现App内自动升级,适配了安卓7、8及以上版本
下一篇: C#使用ECC椭圆曲线算法实现加密与解密&签名与验签,有完整代码
flyinmind
博客等级 码龄20年 67粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值