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

авнего времени мое приложение стало содержать странные сообщения об ошибках в отчетах перед запуском (автоматически генерируется после загрузки в магазин Play).

Эти отчеты содержат исключения, такие как:

Exception java.lang.NoSuchMethodError: No interface method a(Landroid/arch/lifecycle/e;Landroid/arch/lifecycle/b$a;)V in class Landroid/arch/lifecycle/GenericLifecycleObserver; or its super classes (declaration of 'android.arch.lifecycle.GenericLifecycleObserver' appears in /data/app/com.google.android.apps.mtaas.crawler-1/base.apk)
android.arch.lifecycle.f$a.a (f.java:326)
android.arch.lifecycle.f.a (f.java:159)
com.firebase.ui.database.FirebaseRecyclerAdapter.<init> (FirebaseRecyclerAdapter.java:40)

А также:

Exception java.lang.NoSuchMethodError: No static method a(Landroid/app/Activity;)V in class Landroid/arch/lifecycle/ReportFragment; or its super classes (declaration of 'android.arch.lifecycle.ReportFragment' appears in /data/app/com.google.android.apps.mtaas.crawler-1/base.apk)
android.arch.lifecycle.LifecycleDispatcher$DispatcherActivityCallback.onActivityCreated (LifecycleDispatcher.java:77)
android.app.Application.dispatchActivityCreated (Application.java:219)
android.app.Activity.onCreate (Activity.java:1040)
android.support.v4.app.SupportActivity.onCreate (SupportActivity.java:66)
android.support.v4.app.FragmentActivity.onCreate (FragmentActivity.java:285)
android.support.v7.app.AppCompatActivity.onCreate (AppCompatActivity.java:84)

А также:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.arch.core.internal.SafeIterableMap.size()' on a null object reference
    at android.arch.lifecycle.LifecycleRegistry.getObserverCount(LifecycleRegistry.java:204)
    at android.arch.lifecycle.ProcessLifecycleOwner.b(ProcessLifecycleOwner.java:154)
    at android.arch.lifecycle.ProcessLifecycleOwner.a(ProcessLifecycleOwner.java:100)
    at android.arch.lifecycle.LifecycleRuntimeTrojanProvider.onCreate(LifecycleRuntimeTrojanProvider.java:36)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1751)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1726)
    at android.app.ActivityThread.installProvider(ActivityThread.java:6031)
    ... 10 more

Странно то, что мое выпущенное приложение работает нормально на реальных устройствах (исключения появляются только во время предварительных тестов).

Я попытался отменить все (основные) изменения, выполненные со времени последней сборки, в которой у меня не было проблем с предварительным запуском: от API 26 до API 27, более старой версии библиотек поддержки, без D8 и т. Д., Но пока безуспешно: из 9 выполняемых тестов только 1 или 2 успешно пройдены, остальные не проходят с ошибками такого типа.

Что я могу сделать, чтобы решить эту проблему?

 Peter06 нояб. 2017 г., 12:06
@ MichałTajchert появились эти проблемы после изменения на вашей стороне? И если так, что это за изменение в вашем случае?
 Michał Tajchert06 нояб. 2017 г., 17:00
Незначительные и не меняли версию сервисов Firebase / Google Play или что-то подобное между сборками.
 Bernd Kampl06 нояб. 2017 г., 13:37
Я вижу то же самое при запуске новой бета-версии.
 Michał Tajchert05 нояб. 2017 г., 10:27
Могу подтвердить. Я вижу такие же проблемы при запуске на бета-канал.

Ответы на вопрос(2)

Решение Вопроса

зучают проблему.

В качестве обходного пути вы можете вернуться к предыдущей версии сканера, выбрав только что выпущенную.

Вот как можно отказаться:

Войдите в свою игровую консоль.Выберите приложение.Выберите Управление выпуском> Отчет перед запуском> Настройки. В разделе «Предварительная версия отчета» переместите переключатель отказа вправо, пока он не станет синим.

После этого отчеты о запуске снова отображаются правильно.

PS - Это отключит стандартные тесты, выполненные в Google Play, и вы можете пропустить любые другие ошибки по другой причине. Следовательно, не забудьте реализовать свои собственные тесты перед выпуском в производство.

 Tobbbe07 нояб. 2017 г., 10:05
Это сработало, спасибо!
 yvolk26 дек. 2017 г., 10:05
@SaswatAnand К сожалению, «повторная подпись» приложения с помощью «нового сканера» все еще не работает должным образом. Сегодня я получил ту же ошибку, вызванную дублированными классами, введенными сканером: «Найден дублированный класс при проверке файлов oat: 'Ljunit / framework / Assert;' в /data/app/com.google.android.apps.mtaas.crawler-1/base.apk and /data/app/org.andstatus.app-1/base.apk "Отчет отправлен.
 Charlie26 июл. 2018 г., 10:28
@SaswatAnand Я получил ClassCastException и NoSuchMethodError в библиотеке Gson при запуске тестов на сканерах перед запуском. Отлично работает на реальных устройствах. Сбой на 8/9 виртуальных устройств.
 bladerunner24 июл. 2018 г., 22:50
@SaswatAnand я вижу эту проблему сейчас с gson:07-24 12:14:08.434: W/zygote64(8922): Found duplicated class when checking oat files: 'Lcom/google/gson/a;' in /data/app/com.google.android.apps.mtaas.crawler-1A7hyrp7jxNTXABLVGobWw==/base.apk and /data/app/com.nomorobo-Uda3trOXwtXakvbS0uwG2Q==/base.apk что вызвало исключение:java.lang.IllegalAccessError: Illegal class access Но, как ни странно, это происходит только с Pixel на Android 8.0.
 Saswat Anand08 нояб. 2017 г., 02:31
Да, в новом сканере произошла регрессия. Ошибка была исправлена ​​и нажата. Если проблема все еще появляется в вашем приложении, сообщите нам об этом.

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

Ваш ответ на вопрос