greenrobot EventBusでindexクラスが生成されない時の対応
EventBusライブラリを導入した際にkaptで生成されるはずのindexクラスが生成されなかった時にした事について
build.gradleの設定
まずはドキュメントに書いてある通りに build.gradle
にkaptプラグインの導入やライブラリの設定を行います。
apply plugin: 'kotlin-kapt' // ensure kapt plugin is applied dependencies { def eventbus_version = '3.2.0' implementation "org.greenrobot:eventbus:$eventbus_version" kapt "org.greenrobot:eventbus-annotation-processor:$eventbus_version" } kapt { arguments { arg('eventBusIndex', 'com.example.myapp.MyEventBusIndex') } }
Subscriber Index - Open Source by greenrobot
KotlinのコードでEventBusを使うには上記で指定した MyEventBusIndex
を使います。
しかし、この段階でビルドを行っても MyEventBusIndex
が生成されないためクラスを使うことができないという問題が発生しました。
indexクラスを生成するには
indexクラスが生成されるようにするためには、適当なクラスに以下のようなイベントをサブスクライブするためのメソッドを追加する必要があります。
@Subscribe(threadMode = ThreadMode.MAIN) fun onMessageEvent(event: Object) { }
イベントを受け取るメソッドがない時はindexクラスは不要(=生成する必要がない)ためにこのような処理になっていそうですね
おわりに
EventBusを使うのが初めてではなかったので最初からindexクラスを生成する方法でライブラリを導入しようとしたために問題にぶつかってしまいましたが、 indexクラスを使用しない get started を最初に試みていたらはまることもなくライブラリの導入が行えそうでした。
How to get started with EventBus in 3 steps - Open Source by greenrobot