2015/06/28、ButterKnifeの7.0.0がリリースされました。
6.x系からAPIの変更が何点かあるので、簡単に移行手順をまとめます
@InjectView/@InjectViews -> @Bind Viewを変数にひもづけるアノテーションが、@Bindに変更になりました。
複数の場合も@Bindです。とりあえず全部置換しましょう。
@Optionalの廃止 レイアウトに存在しないかもしれないViewの時、今までは@Optionalを利用していましたが、7.0からは@Nullableを使います。support-annotationsライブラリの@Nullableでも、別のライブラリの@Nullableでも構わないようです。
下記のように変更になっています。
ButterKnife.inject -> ButterKnife.bindButterKnife.reset -> ButterKnife.unbind
ButterKnifeによって自動生成されるクラス名がFooActivity$$ViewInjectorからFooActivity$$ViewBinderに変更されたので、Proguard設定も変える必要があります。
下記のようになります。
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}stringやbool, color等のxmlに定義されたリソースを変数にバインド出来るようになりました。
下記のアノテーションを使います。
@BindBool: R.boolをbooleanにバインド@BindColor: R.colorをint/ClorStateListにバインド@BindDimen: R.dimenをint(ピクセルサイズ)あるいはfloat(正確な数値)にバインド@BindDrawable: R.drawableをDrawableにバインド@BindInt: R.intをintにバインド@BindString: R.stringをStringにバインドこちらからは以上です。
参考: butterknife/CHANGELOG.md at master · JakeWharton/butterknife