你的位置:首页 > 操作系统

[操作系统]Afinal的jar包进行代码混淆出错


今天用到了代码混淆,混淆过后APP不能够运行,老报错,由于项目中只用了Afinal的第三方库,于是按照网上给出的答案为了不混淆Afinal的jar包,在配置文件中写入了下面的语句:

-libraryjars libs/afinal_0.5.1_bin.jar-dontwarn net.tsz.afinal.** -keep class net.tsz.afinal.** { *; } -keep public class * extends net.tsz.afinal.** -keep public interface net.tsz.afinal.** {*;}

但是混淆后的包依旧报错,报错的日志中显示的是空指针异常,翻了翻代码,只用到了Afinal的FinalActivity的注解式获取View,有可能是该原因,于是又百度谷歌的找答案,这个框架用到了反射的机制,所以我们有时有必要加上如下语句:

-keepattributes Signature-keepattributes *Annotation*

加上之后进行混淆时通不过,然后检查前后的配置,想了想是不是多了

-dontwarn 

因为在配置文件最前已经加了一句

-dontwarn

于是去掉

-dontwarn 

还是不行,查看错误日志,由于引入android-support-v4.jar,于是添加:

-dontwarn android.support.v4.**

OK,混淆通过,装机测试,OK,也通过了。

看到网上说有可能还有其他问题,需加入以下代码:

-keepclasseswithmembers class xxx.** {   <fields>;   <methods>;}

将xxx换成你继承的afinal的这个包名加类名即可。
加上这些,基本上算是没啥问题了!