前面一文介绍了Android使用ProGuard代码混淆技术,不过对于某些引入了第三方jar包的项目可能在导出的时候会报错,这时就需要对proguard配置文件进行一些研究才能解决问题了。

ProGuard 代码混淆后导出警告:can’t find referenced class

20131004120218

一、这时候最简单的解决方法:

对于有的第三方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!而且程序能正确运行。

附配置文件:

20131004115952

发表评论

/ 快捷键:Ctrl+Enter
加载中……