EventBus报 No static field MAIN o

2018-04-09  本文已影响0人  pinkong

今天用到一个第三方库,其中有用到EventBus,bug模式下都是可以的,本想打个release包就可以交差,结果一启动就崩了。崩溃点在EventBus注册的时候:

 EventBus.getDefault().register(this);

异常消息如下:

java.lang.NoSuchFieldError: No static field MAIN of type Lorg/greenrobot/eventbus/ThreadMode; in class Lorg/greenrobot/eventbus/ThreadMode; or its superclasses (declaration of 'org.greenrobot.eventbus.ThreadMode' appears in /data/app/cn.com.ngds.gamestore.oem-1/base.apk)
                                                       at java.lang.reflect.Method.getAnnotationNative(Native Method)
                                                       at java.lang.reflect.Method.getAnnotation(Method.java:557)

变量找不到,很明显,又是被ProGuard给去掉了。于是再progrard-rules.pro加一句:

-keep enum org.greenrobot.eventbus.ThreadMode { *; }

类似的,当EventBus注解的函数找不到时,可以加以下等等:

# EventBus 3.0
-keepclassmembers class ** {
    public void onEvent*(**);
}

# EventBus 3.0 annotation
-keepclassmembers class * {
    @de.greenrobot.event.Subscribe <methods>;
}
上一篇下一篇

猜你喜欢

热点阅读