标签:
今天用到了代码混淆,混淆过后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的这个包名加类名即可。
加上这些,基本上算是没啥问题了!
标签:
原文地址:http://www.cnblogs.com/leevey/p/4624672.html