GreenRobot EventBus, ClassNotFoundException все еще существует после использования индекса подписчика

У меня есть распространенная проблема EventBus "ClassNotFoundException" с 4.4.2 устройство, это даже устранение неполадок в FAQ

Сначала я дважды проверил, что не использовал никаких непроприированных методов жизненного цикла, но я этого не сделал. Затем я обновился до EventBus 3.0.0 и использовал «индекс подписчиков». Но ошибка все еще здесь, и я все еще вижу в своей трассировке стека, что строитель пытается использовать рефлексивность (findUsingReflectionInSingleClass):

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.os.PersistableBundle" on path: DexPathList[[zip file "/data/app/com.m360.android.debug-6.apk"],nativeLibraryDirectories=[/data/app-lib/com.m360.android.debug-6, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    at java.lang.Class.getDeclaredMethods(Native Method) 
    at java.lang.Class.getPublicMethodsRecursive(Class.java:894) 
    at java.lang.Class.getMethods(Class.java:877) 
    at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:157) 
    at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88) 
    at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64) 
    at org.greenrobot.eventbus.EventBus.register(EventBus.java:136) 
    at com.m360.android.activity.PlayerActivity.onStart(PlayerActivity.java:977) 
    at ... 

In Player Activity :

@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(QuestionFragment.EnableNextEvent event) {

    /* ...... */

}

@Override
protected void onStart() {
    super.onStart();
    EventBus.builder().addIndex(new MyEventBusIndex()).build().register(this);
}

@Override
protected void onStop() {
    super.onStop();
    EventBus.getDefault().unregister(this);
}

Также доступен MyEventBusIndex, поэтому я думаю, что мои файлы сборки в порядке.

Пожалуйста, дайте мне знать, если вы видите, в чем проблема.


person Renaud Favier    schedule 15.07.2016    source источник
comment
Вы уверены, что не переопределяете метод onCreate (Bundle saveInstanceState, PersistableBundle PermanentState) в своей деятельности? Похоже, что даже простое переопределение (а не только вызов подписки внутри него) может вызвать этот сбой.   -  person Brett    schedule 15.07.2016
comment
Я перепроверил, как я уже сказал, и, поскольку вы вызвали сомнение, я проверил еще раз. Нашел его в родителях всех моих действий... Теперь все отлично работает! Большое спасибо!   -  person Renaud Favier    schedule 15.07.2016
comment
Вот так иногда бывает :) Ура.   -  person Brett    schedule 15.07.2016
comment
Рад, что вы решили это. Чтобы объяснить, почему это произошло с индексом подписчика: findUsingReflectionInSingleClass вызывается только в том случае, если класс подписчика отсутствует в индексе. Вопрос был бы в том, почему...   -  person Markus Junginger    schedule 15.07.2016
comment
да, но теперь, когда у меня больше нет сбоя, я не знаю, используется ли индекс или просто работает рефлексия.   -  person Renaud Favier    schedule 15.07.2016


Ответы (1)


У меня была такая же ошибка на Galaxy s3 (android 4.3). Это происходит на Android, где уровень API ниже 21, и у вас есть прямая ссылка на PersistableBundle. .

Мне "EventBus 3 с индексом абонента" не помог (как и вам). Итак, обходной путь я нашел здесь .

Немного больше об ошибке/причине: 34420839">здесь.

P.S. шина событий 3.0.0

person Yaroslav Havrylovych    schedule 25.11.2016
comment
Здравствуйте, несколько недель назад я стер даже автобус из своего проекта. Я думаю, это к лучшему. Спасибо за ответ ! - person Renaud Favier; 25.11.2016