关于 Caused by: org.a.a.e: Subscriber class com.xxx.xxx.activity.MainActivity and its super class

BUG 记录

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxxx/com.xxx.xxxx.activity.MainActivity}: org.a.a.e: Subscriber class com.xxx.xxxx.activity.MainActivity and its super classes have no public methods with the @Subscribe annotation
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6810)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
     Caused by: org.a.a.e: Subscriber class com.xxx.xxxx.activity.MainActivity and its super classes have no public methods with the @Subscribe annotation
        at org.a.a.p.a(SubscriberMethodFinder.java:67)
        at org.a.a.c.a(EventBus.java:140)
        at com.xxx.xxxx.base.BaseActivity.e(BaseActivity.java:82)
        at com.xxx.xxxx.base.BaseActivity.onCreate(BaseActivity.java:50)
        at android.app.Activity.performCreate(Activity.java:7224)
        at android.app.Activity.performCreate(Activity.java:7213)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)

这里的 BaseActivity 是:

EventBus.getDefault().register(this);

混淆的时候 需要先看接收的方法是否有

@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)

@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
    public void getInfo(Object object) {
        if (object instanceof Boolean) {
            boolean mNetWorkInfo = (boolean) object;
            if (mNetWorkInfo) {
//                SnackBarUtil.show(this, "网络连接");
            } else {
                SnackBarUtil.show(this, "网络断开连接");
            }
        }
    };

其次看混淆文件

-keepclassmembers class ** {
    public void onEvent*(**);
}
-keepclassmembers class ** {
public void xxxxxx(**);
}

-keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}

你可能感兴趣的:(android,闲杂)