Butter Knife 动态的生成和使用class,这意味着静态的分析工具像ProGuard可能会认为这是无用的。为了阻止他们被移除,明确的标明他们将要被保持。为了阻止ProGuard 重命名class,在该class中使用了@Bind来注解一个成员变量,因此需要使用keepclasseswithmembernames 。
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}