由于前面开发数据操作类,所以利用反射,封装了一个BaseDao,本来在平常的时候,调试都没有出问题,可是知道用了 Proguard混淆以后,就出现各种错误,最开始是类型转换错误,到了后面就变成空指针异常,各种错误,并且以及发布出去,手机上不调试,所以就只能把报错信息保存到文件中,每次查看。

混淆以后,所有方法名都出了错误,每次看报错信息,连方法都难找到,所说有属性对应的txt,但是有些混淆的方法名是一模一样,所以找起来相当麻烦。

Frequently Asked Questions:

1.类型转换错误

因为我用的泛型,所以在调用某些方法的时候,会出现这种错误,后面在混淆配置文件加了一个过滤泛型的语句,如下。

-keepattributes Signature

过后,就没有出现类似的类型转换错误。

2.空指针异常

这个错误是我对比前面的错误来说,所用的时间比较短,开始是实在找不到方法到底是哪个(原因是上面提到的混淆后方法名相同),所以就把这个类里面的所有方法都过滤掉,这样我没用多少时间,也就找到了具体的方法,可还是不明白原因,后面发现了其中的一个if判断,我利用反射筛选方法,关键字是“get”,突然我就震精了,大叫一声——soga,原来我 model set/get方法名全部都被混淆了,所以筛选不到方法,返回的也就是null值,自然下面用到这个方法的返回值就会抛出空指针异常。

解决方法:把 model包下面的所有类,全部过滤掉。

总结:如要用到反射,反射一般就会利用到泛型,所以必须要把泛型的全部过滤掉,如果有更具变量名或者方法没判断的,记得所在的类要过滤掉,之中还有用到 annotation的地方,要加入一行代码,如下:

-keepattributes *Annotation*
这样就能过滤掉所有的annotation,否则也会抛出空指针异常。

Proguard官方都有说具体要过滤什么,所以还是要多看看官方的说明啊~

转载于:https://www.cnblogs.com/qiengo/archive/2012/05/26/2519153.html

Android Proguard Questions相关推荐

  1. 安卓面试题 Android interview questions

    安卓面试题 Android interview questions 作者:韩梦飞沙 ‎2017‎年‎7‎月‎3‎日,‏‎14:52:44 1.      要做一个尽可能流畅的ListView,你平时在 ...

  2. [转载]关于Android ProGuard混淆学习记录

    转自:http://www.cnitblog.com/zouzheng/archive/2011/01/12/72630.aspx 前段时间把Android的工程用Ant Build搞定后,现在需要把 ...

  3. Android Proguard 不混淆所有第三方jar(忽略配置设置)

    今天给大家分享一个只混淆自己的项目代码而不混淆所有第三方jar的方法(没错,是所有的第三方都不进行混淆,无论来什么第三方,都不需要动混淆配置) 不混淆所有第三方重大突破 今天又被同事逼迫看了一下Pro ...

  4. Android - ProGuard简介

    Android - ProGuard简介 本文地址: http://blog.csdn.net/caroline_wendy 本文的合集已经编著成书,<高级Android开发强化实战>,欢 ...

  5. Android Proguard / ZKM 点滴记录

    简介 Java代码是非常容易反编译的.为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理. ProGuard是一个混淆代码的开源项目.它的主要作用就是混淆,当然它还能对字节码 ...

  6. Android ProGuard使用要点

    1.基本的的使用可以很容易百度到, 但是当你使用了android-support-v4或者android-support-v7或者android-support-v11包之后,你发现导出的时候, 警告 ...

  7. Android ProGuard使用要点!

    为什么80%的码农都做不了架构师?>>>    1.基本的的使用可以很容易百度到, 但是当你使用了android-support-v4或者android-support-v7或者an ...

  8. android proguard 第三方jar,Android Studio代码混淆-第三方jar混淆汇总(持续更新)

    前言 Android有非常多的优秀的第三方开源jar包,我们经常在我们的项目中使用了不少jar包,但是往往到了release的时候就忘了混淆第三方jar包了,会给我们开发带来不少麻烦,所有在这里汇总一 ...

  9. android+proguard目录,Android Proguard 详解

    一般的商业项目都需要对代码进行加密,Android提供了一种代码混淆方法,介绍如下: 一.简介 1.简介 混淆器通过删除从未用过的代码和使用晦涩名字重命名类.字段和方法,对代码进行压缩,优化和混淆.结 ...

最新文章

  1. JavaScript 公有 私有 静态属性和方法
  2. 终于有人把Elasticsearch原理讲明白了!
  3. ERP软件的追加开发环节存在特殊价值
  4. 扩展jquery scroll事件,支持 scroll start 和 scroll stop
  5. 主动学习(Active Learning)领域部分经典论文汇总
  6. Lnixu Bash
  7. 指针数组和数组指针的本质(四十一)
  8. 一篇带你熟悉MySQL
  9. C++语言风格流变史
  10. Python基本数据类型之数字
  11. 活动推荐 | Google、Facebook、Twitter一线大牛和你一起聊AI
  12. 【数据库】FaceDataset常用的人脸数据库
  13. hdu4416[多串后缀自动机]
  14. 电脑开机显示自动修复失败无法进入系统的解决方法
  15. 大数据全网最佳学习路线总结,不看肯定后悔
  16. 王文彬(淘宝网首席架构师)等关注探讨的问题
  17. win10 蓝牙突然消失 猜测解决方法(仅供参考)
  18. 【不得不看的几种js监听浏览器返回,关闭,刷新】
  19. 几款便携式3D扫描仪
  20. 《上帝掷骰子吗》人物八卦之费因曼

热门文章

  1. Python下基于requests及BeautifulSoup构建网络爬虫
  2. 斜齿轮受力计算:理论计算virtual.lab motion 仿真
  3. 全概公式和贝叶斯公式的理解及例题
  4. OpenCV--罗德里格斯(Rodrigues)变换
  5. [shell][001] [advanced]定制化自己的shell命令
  6. 必背单词_初中英语:2000个必背单词(附音标)汇总,打印背完,3年考高分
  7. filepermission java,Java FilePermission getActions()方法与示例
  8. 斑能不能彻底去掉_海鲜不能和什么一起吃
  9. debian9为什么默认是pip2_VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。...
  10. pb的webserver增加的方法发布后没有显示_Egret 5.3 正式发布,为重度小游戏开发带来新技能...