我在我的應用程序中使用了eventbus,它在debuge模式下工作正常,但不適用於發佈APK。用於ProGuard的配置綠色機器人事件總線的ProGuard配置
以下代碼:
-keepattributes *Annotation*
-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
我所有的訂閱註釋的方法也公開
logcat的輸出:
無法調度事件: com。 dhaval.example.model.entity.response.DashboardUnreadStoryResponse 訂閱類的類 com.dhaval.example.view.activity.MainActivity java.lang.NullPointerException:試圖調用虛擬方法 'java.lang.String com.dhaval .example.model.entity.Dashboard.ba()' 空對象引用 at com.dhaval.example.view.activity.MainActivity.b(SourceFile:150) at com.dhaval.example.view.activity .MainActivity.onEventBusEvent(SourceFile:485) at java.lang.reflect.Method.invoke(Native Method) at org.greenrobot.eventbus.ca(SourceFile:485) at org.greenrobot.eventbus.ca(Sourc eFile:420) at org.greenrobot.eventbus.ca(SourceFile:397) at org.greenrobot.eventbus.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.a(SourceFile:130) at com.dhaval.example.f.ap $ 2.a(SourceFile :90) at com.dhaval.example.f.ap $ 2.a(SourceFile:85) at com.dhaval.example.network.a $ 1.a_(SourceFile:101) at rx.caa_(SourceFile: 134) at rx.internal.operators.n $ aa(SourceFile:224) 在android.os.Handler.dispatchMessage(Handler.java:95) at android.os.rx.abb $ b.run(SourceFile:107) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage .Looper.loop(Looper.java:154) at com.android.internal。android.app.ActivityThread.main(ActivityThread.java:6290) at java.lang.reflect.Method.invoke(Native Method) 。 os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)07-14 11:39:43.640 16402-16402/com.dhaval 。例子D/EventBus:沒有訂戶 註冊了事件類別org.greenrobot.eventbus.j 07-1 4 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()」上一個空對象 參考
太我似乎沒有事件總線相關。它只是您自己的model.entity.Dashboard類中的NPE。可能需要將model.entityDashboard添加到proguard例外中:-keep class model.entity.Dashboard。** {*; } – shtolik
但是這個相同的代碼工作進入debug apk –
好的。可能它實際上是關於greenrobot proguard配置。你確定你將這些規則應用於發佈目標的gradle文件嗎?也仍然檢查和添加檢查您的model.entity.Dashboard.ba()訂戶不是空 - 然後它不會與NPE崩潰(但可能仍然不會工作) – shtolik