Android引用第三方jar包混淆时打包报错(can't find referenced class)
场景:项目中引用了第三方的jar包
原因:第三方jar包中引用了好多oracle发布的java标准中(也就是我们常用的JDK)包含的类,但是Android的java标准和oracle的不一样,android.jar里面去掉了oraclejava标准中好多用不到的包和类。
解决办法:首先要把你项目中所引入的第三方jar包使用"-libraryjars包路径"指定好。然后,用-dontwarncom.xx.bbb.**
-keep class com.xx.bbb.** {*;}告诉proguard.cfg不用混淆指定的jar包,也不用提示这个包所报出的错。这样就ok了。
-keep class com.xx.bbb.** {*;}告诉proguard.cfg不用混淆指定的jar包,也不用提示这个包所报出的错。这样就ok了。
注意:要是用dontwarn取消指定包报错之前,你要保证第三方引用的类在你的项目中没有用到。
Android混淆后项目运行的时候出现异常(混淆之前没有该异常)
4、Resources$NotFoundException(resource not found)
资源没有找到,是因为第三方jar包或者自己的代码是通过反射获得R文件中的资源,所以需要将R文件屏蔽掉
原因:代码进行了混淆,R文件没有了,所以通过反射获取的R文件找不到
解决办法:在proguard文件里设置不混淆R文件 -keep class **.R$* { *; }
大家如果遇到其他的异常,可以在下面提出来,希望可以帮助大家解决问题。