前面一文介绍了Android使用ProGuard代码混淆技术,不过对于某些引入了第三方jar包的项目可能在导出的时候会报错,这时就需要对proguard配置文件进行一些研究才能解决问题了。
ProGuard 代码混淆后导出警告:can’t find referenced class
![20131004120218](http://www.vcoo.cc/blog/wp-content/uploads/2013/10/20131004120218-300x119.png)
一、这时候最简单的解决方法:
对于有的第三方jar,可能已经进行过代码混淆了,在这里就要保持,例如百度的地图包jar。保持jar,避免混淆的代码如下:
-keep class com.baidu.mapapi.** {*;}
不混淆com.baidu.mapapi包中的所有代码,类名、方法、变量等。
二、如果还是报错的话请参考此文:http://blog.csdn.net/u_xtian/article/details/7495023
在此感谢作者,解决了我的问题,其实最终方案很简单,添加两行就好了:
其实找不到引用的这个类是第三方包里面的,而且很多时候我们只需要打乱自己的代码就行了,第三方包的代码就是否要打乱就不要管了。
我们可以使用:
-dontwarn com.xx.bbb.**
-keep class com.xx.bbb.** { *;}
参数来保持第三方库中的类而不乱,-dontwarn和-keep 结合使用,意思是保持com.xx.bbb.**这个包里面的所有类和所有方法而不混淆,接着还叫ProGuard不要警告找不到com.xx.bbb.**这个包里面的类的相关引用。
配置好后,重新打包,一切OK!而且程序能正确运行。
以上是本人在写混淆配置文件的时候遇到的错误解决方法
本人在项目中开发使用ant批量打包混淆的配置文件已经上传 点击打开链接
http://download.csdn.net/detail/fancylovejava/8551463
记录下,以后再做其他项目批量打包的时候可以借鉴下!