天天看点

关于butterknife代码混淆的一个小坑关于butterknife代码混淆的一个小坑

关于butterknife代码混淆的一个小坑

最近的一个安卓项目用到了butterknife的视图注入功能,但是在代码混淆时却注入失败。搜到的proguard写法都是这样的:

#butterknife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}
           

写了之后也并没有卵用,都准备放弃混淆,只用加密了。却还是不甘心,又仔细检查了几次,发现这种写法都是针对butterknife7.0及以上的,然后发现自己项目里面引用的是6.0的,二者注入的方法都不同了好么。找了好久终于找到了6.0的混淆写法:

#butterknife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector{ *; }
-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}
           

区别在第三行,一个是ViewBinder,一个是ViewInjector。虽说以后应该会换成更高版本的,但还是记录一下。