proguard代码混淆问题
记录自己遇到的代码混淆问题(spring boot项目代码混淆):
1、由于引入框架,比如JDO,spring boot,有些方法是框架去调用,所以这些是不能够被混淆的。
比如自己编写的转换类:
public class ListStringToStringConverter implements AttributeConverter<List<String>, String> {@Overridepublic String convertToDatastore(List<String> attributeValue) {return CollectionUtils.isEmpty(attributeValue) ? JacksonUtils.toJson(new ArrayList<>()): JacksonUtils.toJson(attributeValue);}@Overridepublic List<String> convertToAttribute(String datastoreValue) {if (StringUtils.isBlank(datastoreValue)) {return new ArrayList<>();}return JacksonUtils.fromJson(datastoreValue, new TypeReference<ArrayList<String>>() {});}
}
AttributeConverter来自javax.jdo.AttributeConverter,是jdo需要去调用的,代码混淆后这些override的方法是不能够被混淆的,否则jdo调用不到,报错。
要用 -keep public class 具体的类{*;} 保持类不被混淆
2、当代码中遇到了多个catch exception的时候,proguard代码混淆会触发bug。代码存在下面这种
try{// code }catch (IOException | InvalidFormatException e){LOG.error(e);throw new RuntimeException(e);}
报错信息是:
java.lang.VerifyError: Bad type on operand stack
即使keep这个报错的类 也无法消除这个报错。后续找到这个bug的讨论,发现我的这个类里面确实含有多个catch exception的情况
这是这个bug的讨论
解决办法:bug的讨论里面Eric给出了一种解决办法,如下
但由于项目的jdk版本不能随意改,所以我只有将代码中的多个catch Exception改掉,只用一个Exception。
proguard代码混淆问题相关推荐
- java代码proguard代码混淆GUI使用,附带混淆map映射
proguard代码混淆GUI使用,附带混淆map映射 混淆结果预览 本例使用的是Proguard 7.2.2,可以官网直接下载 链接:https://pan.baidu.com/s/1PejprpE ...
- java 混淆 ant_Ant编译android,并Proguard代码混淆,v4混淆配置
忙了三四周,总算把购开心的ios版(appStore搜"购开心")成功翻译成了android版,UI效果基本保持一致,上一张UI效果图吧,很养眼的: 还不错吧,进入正题吧. 以前一 ...
- springboot proguard 代码混淆
前面主要描述碰到的问题,文章后面会给出我的proguard-maven-plugin插件的完整配置 proguard-maven-plugin 插件版本 2.3.1,proguard-base版本7. ...
- ProGuard代码混淆器如何使用
- Android代码混淆工具Proguard学习
概述 Proguard代码混淆工具:可以对代码进行去冗余压缩,代码优化,代码混淆等.在Android中的主要应用就是对代码混淆:就是将类名,方法名,Field名变成如a,b,c或者1,2,3等难以阅读 ...
- 最新版SpringBoot结合ProGuard实现代码混淆
SpringBoot结合ProGuard实现代码混淆 参考案例 前言 ProGuard集成 1.maven的配置 2.相关异常解决 注意事项 参考案例 1.Springboot+proguard+ma ...
- Android Progurad 代码混淆
ref: ProGuard基础语法和打包配置.md https://github.com/D-clock/Doc/blob/master/Android/Gradle/3_ProGuard%E5%9F ...
- 迷你播放器--第一阶段(7)--安全攻防第一战--对抗反编译,代码混淆和对抗动态调试
迷你播放器--第一阶段(7) 安全攻防第一战--对抗反编译,代码混淆和对抗动态调试; 本文章为CSDN作者原创,转载请保留出处:http://blog.csdn.net/lrs0304/article ...
- maven 代码混淆
proguard代码混淆 <!-- Build Settings --><build><plugins><plugin><groupId>c ...
最新文章
- 谷歌开发者大会杀出技术黑马,知乎AI终于不再隐藏实力了
- 言论丨李开复:中国在AI领域的优势与机会,现阶段AI领域的挑战
- 手机休眠监测wifi
- 常用前端框架Angular和React的一些认识
- 学习笔记(十二)——虚拟机安装和pycharm远程连接Ubuntu
- lua执行shell命令6_tolua_runtime 集成 lua-protobuf 第三方pb3解析库
- 分析PCB技术印制电路板的可靠性设计(z)
- php 实现类,php如何实现类
- linux忘记mysql密码_linux下忘记mysql root密码解决办法 | 系统运维
- 第1次作业:阅读优秀博文谈感想
- java 一一对应的替换_SpringMVC的Controller是如何将参数和前端传来的数据一一对应的...
- Tensorflow学习—— 预创建的 Estimator
- 腾讯钟翔平:以数字技术驱动,做智慧交通共建者
- python 和vba在财务上_各位大佬好,财务分析,要使用BI,VBA,Python,Wind学习那个可以对财务工作更加有益?...
- dell optiplex 7090 ssf 注入intel i219 网卡驱动安装exsi 7.0.2
- 0.1 番外篇: UML 类图
- 冰雪之冠上的明珠与东方明珠 辉映在黄浦江两岸
- Android使用java和kotlin混合开发时 发现黄油刀BindView失效
- 【日记本砸】21.01.08-12 最快的成长方式就是慢慢来
- 计算机软件系统的组成