Android Proguard Questions
由于前面开发数据操作类,所以利用反射,封装了一个BaseDao,本来在平常的时候,调试都没有出问题,可是知道用了 Proguard混淆以后,就出现各种错误,最开始是类型转换错误,到了后面就变成空指针异常,各种错误,并且以及发布出去,手机上不调试,所以就只能把报错信息保存到文件中,每次查看。
混淆以后,所有方法名都出了错误,每次看报错信息,连方法都难找到,所说有属性对应的txt,但是有些混淆的方法名是一模一样,所以找起来相当麻烦。
Frequently Asked Questions:
1.类型转换错误
因为我用的泛型,所以在调用某些方法的时候,会出现这种错误,后面在混淆配置文件加了一个过滤泛型的语句,如下。
-keepattributes Signature
2.空指针异常
这个错误是我对比前面的错误来说,所用的时间比较短,开始是实在找不到方法到底是哪个(原因是上面提到的混淆后方法名相同),所以就把这个类里面的所有方法都过滤掉,这样我没用多少时间,也就找到了具体的方法,可还是不明白原因,后面发现了其中的一个if判断,我利用反射筛选方法,关键字是“get”,突然我就震精了,大叫一声——soga,原来我 model的 set/get方法名全部都被混淆了,所以筛选不到方法,返回的也就是null值,自然下面用到这个方法的返回值就会抛出空指针异常。
解决方法:把 model包下面的所有类,全部过滤掉。
总结:如要用到反射,反射一般就会利用到泛型,所以必须要把泛型的全部过滤掉,如果有更具变量名或者方法没判断的,记得所在的类要过滤掉,之中还有用到 annotation的地方,要加入一行代码,如下:
Proguard官方都有说具体要过滤什么,所以还是要多看看官方的说明啊~
转载于:https://www.cnblogs.com/qiengo/archive/2012/05/26/2519153.html
Android Proguard Questions相关推荐
- 安卓面试题 Android interview questions
安卓面试题 Android interview questions 作者:韩梦飞沙 2017年7月3日,14:52:44 1. 要做一个尽可能流畅的ListView,你平时在 ...
- [转载]关于Android ProGuard混淆学习记录
转自:http://www.cnitblog.com/zouzheng/archive/2011/01/12/72630.aspx 前段时间把Android的工程用Ant Build搞定后,现在需要把 ...
- Android Proguard 不混淆所有第三方jar(忽略配置设置)
今天给大家分享一个只混淆自己的项目代码而不混淆所有第三方jar的方法(没错,是所有的第三方都不进行混淆,无论来什么第三方,都不需要动混淆配置) 不混淆所有第三方重大突破 今天又被同事逼迫看了一下Pro ...
- Android - ProGuard简介
Android - ProGuard简介 本文地址: http://blog.csdn.net/caroline_wendy 本文的合集已经编著成书,<高级Android开发强化实战>,欢 ...
- Android Proguard / ZKM 点滴记录
简介 Java代码是非常容易反编译的.为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理. ProGuard是一个混淆代码的开源项目.它的主要作用就是混淆,当然它还能对字节码 ...
- Android ProGuard使用要点
1.基本的的使用可以很容易百度到, 但是当你使用了android-support-v4或者android-support-v7或者android-support-v11包之后,你发现导出的时候, 警告 ...
- Android ProGuard使用要点!
为什么80%的码农都做不了架构师?>>> 1.基本的的使用可以很容易百度到, 但是当你使用了android-support-v4或者android-support-v7或者an ...
- android proguard 第三方jar,Android Studio代码混淆-第三方jar混淆汇总(持续更新)
前言 Android有非常多的优秀的第三方开源jar包,我们经常在我们的项目中使用了不少jar包,但是往往到了release的时候就忘了混淆第三方jar包了,会给我们开发带来不少麻烦,所有在这里汇总一 ...
- android+proguard目录,Android Proguard 详解
一般的商业项目都需要对代码进行加密,Android提供了一种代码混淆方法,介绍如下: 一.简介 1.简介 混淆器通过删除从未用过的代码和使用晦涩名字重命名类.字段和方法,对代码进行压缩,优化和混淆.结 ...
最新文章
- JavaScript 公有 私有 静态属性和方法
- 终于有人把Elasticsearch原理讲明白了!
- ERP软件的追加开发环节存在特殊价值
- 扩展jquery scroll事件,支持 scroll start 和 scroll stop
- 主动学习(Active Learning)领域部分经典论文汇总
- Lnixu Bash
- 指针数组和数组指针的本质(四十一)
- 一篇带你熟悉MySQL
- C++语言风格流变史
- Python基本数据类型之数字
- 活动推荐 | Google、Facebook、Twitter一线大牛和你一起聊AI
- 【数据库】FaceDataset常用的人脸数据库
- hdu4416[多串后缀自动机]
- 电脑开机显示自动修复失败无法进入系统的解决方法
- 大数据全网最佳学习路线总结,不看肯定后悔
- 王文彬(淘宝网首席架构师)等关注探讨的问题
- win10 蓝牙突然消失 猜测解决方法(仅供参考)
- 【不得不看的几种js监听浏览器返回,关闭,刷新】
- 几款便携式3D扫描仪
- 《上帝掷骰子吗》人物八卦之费因曼
热门文章
- Python下基于requests及BeautifulSoup构建网络爬虫
- 斜齿轮受力计算:理论计算virtual.lab motion 仿真
- 全概公式和贝叶斯公式的理解及例题
- OpenCV--罗德里格斯(Rodrigues)变换
- [shell][001] [advanced]定制化自己的shell命令
- 必背单词_初中英语:2000个必背单词(附音标)汇总,打印背完,3年考高分
- filepermission java,Java FilePermission getActions()方法与示例
- 斑能不能彻底去掉_海鲜不能和什么一起吃
- debian9为什么默认是pip2_VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。...
- pb的webserver增加的方法发布后没有显示_Egret 5.3 正式发布,为重度小游戏开发带来新技能...