Тайна ClassNotFoundException

Консоль Google Play сообщает, что небольшой процент моих пользователей получает ClassNotFoundException при запуске приложения. Загадка в том, какой класс нельзя найти? Что ж, Stacktrace должен указывать имя, но в этих случаях оно отсутствует. Ниже приведена трассировка, которая отправляется несколькими устройствами:

java.lang.RuntimeException: 
  at android.app.LoadedApk.makeApplication(LoadedApk.java:507)
  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4720)
  at android.app.ActivityThread.access$1500(ActivityThread.java:166)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1343)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:136)
  at android.app.ActivityThread.main(ActivityThread.java:5584)
  at java.lang.reflect.Method.invokeNative(Method.java:0)
  at java.lang.reflect.Method.invoke(Method.java:515)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
  at dalvik.system.NativeStart.main(NativeStart.java:0)
Caused by: java.lang.ClassNotFoundException: 
  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 android.app.Instrumentation.newApplication(Instrumentation.java:982)
  at android.app.LoadedApk.makeApplication(LoadedApk.java:502)

Как видите, стандартное сообщение «Не найден класс «xx.yy.zz» отсутствует! Есть идеи?


person lionscribe    schedule 23.05.2017    source источник
comment
Еще немного информации было бы неплохо. Версия API. Используется Multidex и т. д. Насколько я знаю, это была какая-то старая ошибка dalvik, которая вызывает проблемы при установке или первом запуске.   -  person daemmie    schedule 23.05.2017
comment
80% затронутых пользователей используют Android 5., остальные используют 5.0, 4.4, 4.3, 4.2. Кажется, что это происходит несколько раз с одними и теми же пользователями.   -  person lionscribe    schedule 23.05.2017


Ответы (1)


я только что создал учетную запись, чтобы кое-что спросить, поэтому я не мог помочь вам комментарием:) извините, что сделал эту небольшую подсказку в качестве ответа.

последнее исключение без причины является интересным. мой ответ, несмотря на данные, которыми вы поделились из своего проекта, заключается в том, чтобы следить за строкой «Вызвано: java.lang.ClassNotFoundException:» в выводе вашего журнала, чуть ниже этой строки перейдите к «BaseDexClassLoader.java: 56», щелкнув по ней, это первая строка в его трассировке стека, эта строка сообщает вам класс и метод, в котором произошло исключение без причины, а также его файл и номер строки, я почти уверен, что вы найдете больше подсказок, ища оттуда, поскольку это место, вероятно, вызвано Главная проблема.

person Community    schedule 23.05.2017
comment
Спасибо. Проблема в том, что я получаю отчеты о сбое на Play Console. Я не получаю это во время отладки. Поэтому я не могу получить более подробную информацию. - person lionscribe; 23.05.2017
comment
о, я вижу, извините. у вас было какое-либо обновление в вашем проекте, которое включает какие-либо изменения API? из того, что вы сказали, эта проблема возникает только у пользователей Android 5 и ниже, поэтому, если вы используете, например, какую-либо функцию библиотеки поддержки любых других сторонних разработчиков, возможно, вам придется поставить проверку Android API перед их реализацией и сохранить предыдущую конфигурацию для Android с 5 до 4,... - person ; 23.05.2017
comment
Для меня не так важно исправлять, так как проблема есть только у нескольких пользователей. Мне важнее, почему это происходит. - person lionscribe; 24.05.2017
comment
Я понимаю. на панели инструментов Android Studio, Analyze-> проверьте код. Затем выберите весь проект и запустите его, если есть какая-либо функция, которую использует ваше приложение, и она несовместима с вашим минимальным SDK, он покажет предупреждение. Попробуйте, если вы еще этого не сделали, может быть, это разгадает тайну - person ; 24.05.2017