美文网首页
EventBus报 No static field MAIN o

EventBus报 No static field MAIN o

作者: pinkong | 来源:发表于2018-04-09 00:34 被阅读0次

    今天用到一个第三方库,其中有用到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>;
    }
    

    相关文章

      网友评论

          本文标题:EventBus报 No static field MAIN o

          本文链接:https://www.haomeiwen.com/subject/xkrvhftx.html