1

我在我的应用程序中使用了 eventbus,它在调试模式下工作正常,但在发布 APK 上不工作。

以下代码用于 ProGuard 配置:

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

我所有的订阅注释方法也是公开的

日志输出:

无法调度事件:com.dhaval.example.model.entity.response.DashboardUnreadStoryResponse 类订阅类 com.dhaval.example.view.activity.MainActivity java.lang.NullPointerException:尝试调用虚拟方法'java.lang。在 com.dhaval.example.view 的 com.dhaval.example.view.activity.MainActivity.b(SourceFile:150) 上的空对象引用上的字符串 com.dhaval.example.model.entity.Dashboard.ba()'。 java.lang.reflect.Method 中的 activity.MainActivity.onEventBusEvent(SourceFile:560)。在 org.greenrobot.eventbus.ca(SourceFile:420) 在 org.greenrobot.eventbus.ca(SourceFile:397) 在 org.greenrobot.eventbus. 调用 (Native Method) 在 org.greenrobot.eventbus.ca(SourceFile:485) .ca(SourceFile:370) at org.greenrobot.eventbus.cd(SourceFile:251) at com.dhaval.example.view.ar$1.a(SourceFile:140) at com.dhaval.example.view.ar$1。一个(源文件:130) 在 com.dhaval.example.f.ap$2.a(SourceFile:90) 在 com.dhaval.example.f.ap$2.a(SourceFile:85) 在 com.dhaval.example.network.a$1。 a_(SourceFile:101) 在 rx.caa_(SourceFile:134) 在 rx.internal.operators.n$aa(SourceFile:224) 在 rx.abb$b.run(SourceFile:107) 在 android.os.Handler。处理回调(处理程序.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6290) 在 java.在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 的 lang.reflect.Method.invoke(Native Method) ) 07-14 11:39:43.640 16402-16402/com.dhaval.example D/EventBus:没有订阅者注册事件类 org.greenrobot.eventbus.j 07-14 11:39:43.657 16402-16402/com.dhaval.example E/com.dhaval.example.view.ar$1:getResponse 中的错误:尝试调用空对象引用上的虚拟方法“java.lang.String com.dhaval.example.model.entity.Dashboard.ba()”

4

1 回答 1

2

绝对听起来像 proguard 相关,但可能不是关于 eventbus,而是关于你自己的 model.entity.Dashboard 类。可能您需要将该 model.entity.Dashboard 添加到 proguard 异常中:

-keep class model.entity.Dashboard.** { *; } 
于 2017-07-14T07:07:01.100 回答