Сбой аутентификации Firebase с FirebaseException: не удалось создать экземпляр JsonResponse

Проблема

Я только что создал обновление для одного из моих приложений Xamarin.Forms, и теперь у меня возникла проблема, заключающаяся в том, что рабочий процесс входа в Firebase внезапно прерывается после загрузки нового файла .aab в Google Play. Он работал нормально до сих пор.

Когда я пытаюсь войти в систему, после выбора учетной записи пользователя Google в журнале устройства появляется следующее сообщение об ошибке:

Time    Device Name Type    PID Tag Message
11-18 16:49:57.295  Samsung SM-S901B    Verbose 5646    mono-stdout com.google.firebase.FirebaseException: An internal error has occurred. [ Instantiation of JsonResponse failed! class com.google.android.gms.internal.firebase-auth-api.zzaac ]
    at com.google.android.gms.internal.firebase-auth-api.zzwe.zza(com.google.firebase:firebase-auth@@21.0.8:4)
    at com.google.android.gms.internal.firebase-auth-api.zzxc.zza(com.google.firebase:firebase-auth@@21.0.8:9)
    at com.google.android.gms.internal.firebase-auth-api.zzxd.zzl(com.google.firebase:firebase-auth@@21.0.8:1)
    at com.google.android.gms.internal.firebase-auth-api.zzxa.zzh(com.google.firebase:firebase-auth@@21.0.8:25)
    at com.google.android.gms.internal.firebase-auth-api.zzwc.zzh(com.google.firebase:firebase-auth@@21.0.8:1)
    at com.google.android.gms.internal.firebase-auth-api.zzua.zza(com.google.firebase:firebase-auth@@21.0.8:2)
    at com.google.android.gms.internal.firebase-auth-api.zzxl.zzb(com.google.firebase:firebase-auth@@21.0.8:13)
    at com.google.android.gms.internal.firebase-auth-api.zzxl.zza(com.google.firebase:firebase-auth@@21.0.8:14)
    at com.google.android.gms.internal.firebase-auth-api.zzwr.zzq(com.google.firebase:firebase-auth@@21.0.8:4)
    at com.google.android.gms.internal.firebase-auth-api.zzuh.zzA(com.google.firebase:firebase-auth@@21.0.8:4)
    at com.google.android.gms.internal.firebase-auth-api.zzwd.zzu(com.google.firebase:firebase-auth@@21.0.8:5)
    at com.google.android.gms.internal.firebase-auth-api.zzvj.zzc(com.google.firebase:firebase-auth@@21.0.8:1)
    at com.google.android.gms.internal.firebase-auth-api.zzxe.run(com.google.firebase:firebase-auth@@21.0.8:1)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

Это влияет только на сборку Release, подписанную Google Play, и поэтому я не могу воспроизвести это в отладчике. При запуске отладочной версии все работает как положено.

Дополнительная информация

Версия Android: 13.0 Целевой API Android: 33

Пакеты NuGet (показаны только кажущиеся релевантными):

  • Xamarin.Forms 5.0.0.2515
  • Google.Api 1.57.0
  • Google.Apis.Auth 1.57.0
  • Xamarin.Firebase.Auth 121.0.8
  • Xamarin.Firebase.Common 120.1.2
  • Xamarin.GooglePlayServices.Auth 120.3.0

Я использую кнопку входа в Google в своей активности Android и не использую веб-аутентификатор (пока).

Я использую наборы приложений Android (.aab) для публикации вместо загрузки файлов .apk.

Что я пробовал до сих пор

Я проверил все отпечатки сертификатов SHA (для сборок отладки и выпуска, а также сертификат подписи в моем хранилище ключей и тот, который используется Google Play для подписи выпуска) по сравнению с отпечатками в консоли Firebase, google-services.json, Google Cloud. Консоль, а также ограничения приложений для моего ключа Android API.

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

Кроме того, я обновил до последних версий библиотеки Google и Firebase Auth для Xamarin.Forms.

Я сейчас немного в растерянности. Есть ли у кого-нибудь предложения о том, как сузить это, или кто-нибудь сталкивался с этой проблемой раньше?

В качестве обходного пути я отключил полный режим для сжатия кода, и вход в систему снова начал работать. На будущее, если кто-то столкнется с таким же: вы можете сделать android.enableR8.fullMode=false в android->gradle.properties. Но это всего лишь обходной путь, мы должны настроить pro guard для сохранения классов аутентификации firebase: github.com/firebase/firebase-android-sdk/issues/2124

Sachin Sabbarwal 30.12.2022 03:07
Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
1
137
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Он снова работает.

Проблема не была связана с сертификатами подписи (которые обычно возникают в первую очередь при подобных проблемах) и используемыми библиотеками.

На самом деле эта проблема была вызвана небольшой оптимизацией, из-за которой средство сжатия кода удаляло некоторый код, связанный с Firebase. Отключение сжатия кода (временно) решило проблему.

Другие вопросы по теме