IllegalArgumentException: *** is not part of the schema for this Realm

環境

現象

既存のJavaAndroid StudioプロジェクトにKotlinを導入してビルドしたところ、起動時以下のエラーが必ず発生してお手上げとなった。

java.lang.RuntimeException: Unable to resume activity {my.package.MainActivity}: java.lang.IllegalArgumentException: MyMessageData is not part of the schema for this Realm
      at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3429)
      at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3469)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2732)
      at android.app.ActivityThread.-wrap12(ActivityThread.java)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:154)
      at android.app.ActivityThread.main(ActivityThread.java:6119)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
   Caused by: java.lang.IllegalArgumentException: MessageData is not part of the schema for this Realm
      at io.realm.internal.modules.CompositeMediator.getMediator(CompositeMediator.java:169)
      at io.realm.internal.modules.CompositeMediator.getTableName(CompositeMediator.java:87)
      at io.realm.RealmSchema.getTable(RealmSchema.java:218)
      at io.realm.RealmSchema.getSchemaForClass(RealmSchema.java:239)
      at io.realm.RealmQuery.<init>(RealmQuery.java:122)
      at io.realm.RealmQuery.createQuery(RealmQuery.java:76)
      at io.realm.Realm.where(Realm.java:1342)

MyMessageData is not part of the schema for this Realm
日本語訳:MyMessageDataは、このレルムのスキーマの一部ではありません

おかしいな、Kotlin追加する前までビルド通ってたんだけどなー

解決方法

なんと、app/build.gradleの宣言順を入れ替えるだけで解決した。

Before

apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

android {
...

After

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android' // <= こいつを一番最後にする

android {
...

apply plugin: 'realm-android'よ、お前は一番最後だったのか…
これだけでビルドが通った。

エラーでググるとStackOverFlowにも回答がすぐに見つかったため、割と同様にハマっている人が多いのかもしれない。

参考リンク