I have been using EventBus since 2017 and I have been able to delivery excellent products to my customers using it. Thanks a lot for such a wonderful tool without which this was not possible.
Lately I have been trying to implement the following on Flutter
Here is the helpful stuff
On MainActivity.kt (extends FlutterActvity)
override fun onStart() {      
if (!MySDK.getEventBus().isRegistered(this)) {   
     MySDK.getEventBus().register(this)     
     Log.i(TAG, "EVENT_BUS => MainActivity successfully register to event bus") 
   } 
   super.onStart()
}
@Subscribe(threadMode = ThreadMode.ASYNC)
    public fun lookForChangeInEvents(event: Any){
        Log.i(TAG!!, String.format("This is the following event %s", event.toString()))
    }
The Error we experience is
Process: com.example.ruc_flutter, PID: 11824
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/window/BackEvent;
            at java.lang.reflect.Executable.getParameterTypesInternal(Native Method)
            at java.lang.reflect.Method.getParameterTypes(Method.java:186)
            at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:173)
            at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88)
            at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64)
            at org.greenrobot.eventbus.EventBus.register(EventBus.java:150)
            at com.example.ruc_flutter.MainActivity.onStart(MainActivity.kt:45)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1455)
            at android.app.Activity.performStart(Activity.java:8315)
            at android.app.ActivityThread.handleStartActivity(ActivityThread.java:4136)
            at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
            at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
            at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loopOnce(Looper.java:226)
            at android.os.Looper.loop(Looper.java:313)
            at android.app.ActivityThread.main(ActivityThread.java:8751)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
          Caused by: java.lang.ClassNotFoundException: Didn't find class "android.window.BackEvent" on path: DexPathList[[zip file "/data/app/~~f23eg9s3HO-H1f5vyz9yqw==/com.example.ruc_flutter-VO7Qr3chQxbW1v_Vz-0G_Q==/base.apk"],nativeLibraryDirectories=[/data/app/~~f23eg9s3HO-H1f5vyz9yqw==/com.example.ruc_flutter-VO7Qr3chQxbW1v_Vz-0G_Q==/lib/arm64, /data/app/~~f23eg9s3HO-H1f5vyz9yqw==/com.example.ruc_flutter-VO7Qr3chQxbW1v_Vz-0G_Q==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:637)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
            at java.lang.reflect.Executable.getParameterTypesInternal(Native Method) 
            at java.lang.reflect.Method.getParameterTypes(Method.java:186) 
            at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:173) 
            at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88) 
            at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64) 
            at org.greenrobot.eventbus.EventBus.register(EventBus.java:150) 
            at com.example.ruc_flutter.MainActivity.onStart(MainActivity.kt:45) 
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1455) 
            at android.app.Activity.performStart(Activity.java:8315) 
            at android.app.ActivityThread.handleStartActivity(ActivityThread.java:4136) 
            at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) 
            at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) 
            at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) 
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) 
            at android.os.Handler.dispatchMessage(Handler.java:106) 
            at android.os.Looper.loopOnce(Looper.java:226) 
            at android.os.Looper.loop(Looper.java:313) 
            at android.app.ActivityThread.main(ActivityThread.java:8751) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) 
 
We did check the following before coming to SO
Can someone help us understand what are we missing out or overlooking ?
I have been using EventBus since 2017 and I have been able to delivery excellent products to my customers using it. Thanks a lot for such a wonderful tool without which this was not possible.
Lately I have been trying to implement the following on Flutter
Here is the helpful stuff
On MainActivity.kt (extends FlutterActvity)
override fun onStart() {      
if (!MySDK.getEventBus().isRegistered(this)) {   
     MySDK.getEventBus().register(this)     
     Log.i(TAG, "EVENT_BUS => MainActivity successfully register to event bus") 
   } 
   super.onStart()
}
@Subscribe(threadMode = ThreadMode.ASYNC)
    public fun lookForChangeInEvents(event: Any){
        Log.i(TAG!!, String.format("This is the following event %s", event.toString()))
    }
The Error we experience is
Process: com.example.ruc_flutter, PID: 11824
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/window/BackEvent;
            at java.lang.reflect.Executable.getParameterTypesInternal(Native Method)
            at java.lang.reflect.Method.getParameterTypes(Method.java:186)
            at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:173)
            at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88)
            at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64)
            at org.greenrobot.eventbus.EventBus.register(EventBus.java:150)
            at com.example.ruc_flutter.MainActivity.onStart(MainActivity.kt:45)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1455)
            at android.app.Activity.performStart(Activity.java:8315)
            at android.app.ActivityThread.handleStartActivity(ActivityThread.java:4136)
            at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
            at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
            at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loopOnce(Looper.java:226)
            at android.os.Looper.loop(Looper.java:313)
            at android.app.ActivityThread.main(ActivityThread.java:8751)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
          Caused by: java.lang.ClassNotFoundException: Didn't find class "android.window.BackEvent" on path: DexPathList[[zip file "/data/app/~~f23eg9s3HO-H1f5vyz9yqw==/com.example.ruc_flutter-VO7Qr3chQxbW1v_Vz-0G_Q==/base.apk"],nativeLibraryDirectories=[/data/app/~~f23eg9s3HO-H1f5vyz9yqw==/com.example.ruc_flutter-VO7Qr3chQxbW1v_Vz-0G_Q==/lib/arm64, /data/app/~~f23eg9s3HO-H1f5vyz9yqw==/com.example.ruc_flutter-VO7Qr3chQxbW1v_Vz-0G_Q==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:637)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
            at java.lang.reflect.Executable.getParameterTypesInternal(Native Method) 
            at java.lang.reflect.Method.getParameterTypes(Method.java:186) 
            at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:173) 
            at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88) 
            at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64) 
            at org.greenrobot.eventbus.EventBus.register(EventBus.java:150) 
            at com.example.ruc_flutter.MainActivity.onStart(MainActivity.kt:45) 
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1455) 
            at android.app.Activity.performStart(Activity.java:8315) 
            at android.app.ActivityThread.handleStartActivity(ActivityThread.java:4136) 
            at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) 
            at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) 
            at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) 
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) 
            at android.os.Handler.dispatchMessage(Handler.java:106) 
            at android.os.Looper.loopOnce(Looper.java:226) 
            at android.os.Looper.loop(Looper.java:313) 
            at android.app.ActivityThread.main(ActivityThread.java:8751) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) 
 
We did check the following before coming to SO
Can someone help us understand what are we missing out or overlooking ?
Just register that Subscriber through a different class and not from MainActivity,
make a class EventLogger.java
public class EventLogger {
public static final String TAG = EventLogger.class.getSimpleName();
public EventLogger() {
    MySDK.getEventBus().register(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSomeEvent(SomeEvent event) {
    Log.d(TAG, "onLocationChangeEvent Started " + event.toString());
    MainActivity.Companion.getEventSink().success("The event is triggered");
    Log.d(TAG, "SomeEvent Ended");
}
public void unregister() {
    EventBus.getDefault().unregister(this);
   } 
}
Make sure to have a public constructor through which you can send back the event triggers in Flutter Event Channel
class MainActivity: FlutterActivity() {
    companion object {
    var eventSink: EventChannel.EventSink? = null
}
    private lateinit var eventLogger: EventLogger
    override fun onDestroy() {
        eventLogger.unregister()
        super.onDestroy()
    }
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    eventLogger = EventLogger()
    
     EventChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL_EVENTS).setStreamHandler(object : EventChannel.StreamHandler{
        override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
            Log.i(TAG, "GT LOGGER => Event Channel for flutter is triggered")
            eventSink = events
        }
        override fun onCancel(arguments: Any?) {
            eventSink = null
        }
      })
    }
}

