Parcelを簡単に使うためのライブラリParceler
Parcelを使いたいけど、いちいちCREATORとか書くのは面倒なので、こう記述して使います。
build.gradle
dependencies {
compile "org.parceler:parceler-api:1.0.3"
apt "org.parceler:parceler:1.0.3"
}
今更言うまでもないButterKnife
DataBindingとかもありますが、やっぱ手軽だなと感じるので、もっぱらButteKnifeを使っています。
build.gradle
dependencies {
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}
そして同じアプリに、これらを同時に使用すると…
build.gradle
dependencies {
compile "org.parceler:parceler-api:1.0.3"
apt "org.parceler:parceler:1.0.3"
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}
当然こう書きますよね。
すると、ビルドは問題なく通りますが@BindViewとかでbindしたはずの変数が実はbindされていずアプリが落ちます。
対策
build.gradle
dependencies {
compile "org.parceler:parceler-api:1.0.3"
apt "org.parceler:parceler:1.0.3"
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
}
これで行けます。
ちなみに…
build.gradle
dependencies {
compile "org.parceler:parceler-api:1.0.3"
annotationProcessor "org.parceler:parceler:1.0.3"
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}
では、org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable class
(抜粋)とか言われて駄目でした。
追記
Parceler1.1.6(現時点の最新版)ではbuild.gradleに書く、apt
の部分がannotationProcessor
になっているので、問題なく併用できます。