Afinal的jar包混淆出错,只使用了FinalDb类,出错原因为作为FinalDb对象参数的类被混淆了,导致FinalDb无法识别,解决办法如下:
为了不混淆Afinal的jar包,在配置文件中写入了下面的语句:
-libraryjars libs/afinal-0.3.32-bin.jar
-dontwarn net.tsz.afinal.**-keep class net.tsz.afinal.** { *; }
-keep public class * extends net.tsz.afinal.**
-keep public interface net.tsz.afinal.** {*;}
但是混淆后的包再调用FinalDb类的相关函数时出错:net.tsz.afinal.FinalDb.findAllByWhere(Unknown Source)......
这个findAllByWhere函数有一个参数是类类型,因为这个类被混淆了,所以函数无法识别该类(无法识别的原因个人认为是FinalDb在建立数据库,表名等时用到了该类的名称和变量名,而混淆后这些名称会改变,所以导致无法正常读取或写入数据到数据库),解决办法:
-keepclasseswithmembers class [类名].** {
<fields>;
<methods>;
}
将[类名]改为作为findAllByWhere参数的类的类名即可。