greenrobot EventBusでindexクラスが生成されない時の対応

EventBusライブラリを導入した際にkaptで生成されるはずのindexクラスが生成されなかった時にした事について

github.com

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