Android Firebase DynamiteModule: не удалось загрузить дескриптор модуля

Начиная с обновления до новейшей версии Firebase (9.0.0), я не могу избавиться от следующих двух ошибок при аутентификации пользователя через signInWithEmailAndPassword(). Кто-нибудь знает, что происходит?

    05-19 18:09:49.245 23550-23589/[PACKAGE] E/DynamiteModule: Failed to load 
    module descriptor class: Didn't find class 
    "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor" 
on path: DexPathList[[zip file 
"/data/app/[PACKAGE]-3/base.apk"],nativeLibraryDirectories=
[/data/app/[PACKAGE]-3/lib/x86, /vendor/lib, /system/lib]]

и

    05-19 18:09:49.252 23550-23550/[PACKAGE] E/FirebaseApp: Firebase API 
initialization failure.java.lang.reflect.InvocationTargetException

      at java.lang.reflect.Method.invoke(Native Method)
      at com.google.firebase.FirebaseApp.zza(Unknown Source)
      at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
      at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
      at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
      at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
      at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)
      at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)
      at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)

(...)    
Caused by: java.lang.IncompatibleClassChangeError: The method 'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' was expected to be of type virtual but instead was found to be of type direct (declaration of 'com.google.firebase.iid.zzg' appears in /data/data/[PACKAGE]/files/instant-run/dex/slice-com.google.firebase-firebase-iid-9.0.0_95503dc60ed409569d1585da411de93e6c633bf7-classes.dex)
      at com.google.firebase.iid.zzg.zzeC(Unknown Source)
      at com.google.firebase.iid.zzg.<init>(Unknown Source)
      at com.google.firebase.iid.zzg.<init>(Unknown Source)
      at com.google.firebase.iid.zzd.zzb(Unknown Source)
      at com.google.firebase.iid.FirebaseInstanceId.getInstance(Unknown Source)
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.google.firebase.FirebaseApp.zza(Unknown Source) 
      at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
      at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
      at com.google.firebase.FirebaseApp.zzbu(Unknown Source)  
      at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) 
      at android.content.ContentProvider.attachInfo(ContentProvider.java:1748) 
      at android.content.ContentProvider.attachInfo(ContentProvider.java:1723) 
      at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 

(...)

Ответ 1

Вы можете проверить свою версию Google Play Services?

Из Firebase oficial сайт:

Предпосылки

  • Android-устройство с службами Google Play 9.0.0 или более поздними версиями
  • SDK для служб Google Play от менеджера Android SDK
  • Android Studio 1.5 или выше
  • Проект Android Studio и его название пакета.

Ответ 2

У меня была такая же проблема, и я нашел ошибку, допущенную мной в консоли Firebase.

Одной из причин этой проблемы может быть ваш метод входа в Firebase > панель управления.

Я только что включил его, и он начал работать.

Ответ 3

Очень грустно, что ошибки инициализации Firebase настолько непросты, что разработчики должны угадать, что пошло не так. В моем случае я импортировал только:

compile 'com.google.firebase:firebase-auth:10.2.0'

и забыл импортировать также ядро:

compile 'com.google.firebase:firebase-core:10.2.0'

Может быть, это поможет кому-то, удачи!

Ответ 4

Я нашел проблему. Проблема была первой предпосылкой, о которой говорил Гильерме, но не смелой частью. Хотя ваши зависимости также должны явно указывать 9. + части игровых сервисов, , сами устройства также должны иметь 9. + установленный. Отладка на моем телефоне отлично работает, и обновление образа моего эмулятора также решает проблему.

Ответ 5

Отключение Instant Run работало для меня. Звучит смешно, я знаю. Я пробовал очистить проект. Я попытался удалить/переустановить приложение. То, что, в конце концов, сделало трюк, было отключение Instant Run. Вздох

Ответ 6

Я вышел из системы, а затем вошел в систему и решил эту проблему для меня.

Вероятно, из-за какой-то синхронизации материал FB не реализован.

Если эта проблема состоит, я попытаюсь ее перехватить. Но, вернее, это ошибка в системе Firebase. И это ошибка, вызванная более чем одним прецедентом, что еще одна проблема сама по себе.

Ответ 7

Этот ответ по другому вопросу заставил мое приложение аутентифицироваться

Альфонсо Гомес Джордана Манас

Привет Пьер,

Вам необходимо вручную переустановить существующие идентификаторы клиентов Google OAuth 2.0 в консоли Firebase, прежде чем использовать их с новыми API-интерфейсами Auth.

Чтобы сделать это, выполните следующие действия:

  • Перейдите в раздел "Учетные данные" в консоли API Google.
  • Выберите в верхнем правом углу проект, в котором вы ранее настроили вход в Google.
  • Перейдите в раздел идентификаторов клиента OAuth 2.0 Если вы используете учетную запись Google в приложениях Android или iOS: Обратите внимание на строку идентификатора клиента, соответствующую всем записям, зарегистрированным для ваших приложений.
  • Введите эти идентификаторы клиентов в конфигурацию проектов Firebase:
  • Перейдите в консоль Firebase в https://console.firebase.google.com
  • Откройте раздел Auth

    В разделе "Вход в систему" ​​откройте конфигурацию Google и добавьте все ваши идентификаторы клиентов в белый список идентификаторов клиентов из внешних проектов. Если вы используете учетную запись Google в веб-приложении: Нажмите, чтобы открыть идентификатор веб-клиента и принять к сведению как идентификатор клиента, так и секрет. Введите этот идентификатор клиента в конфигурацию проектов Firebase: Перейдите в консоль Firebase в https://console.firebase.google.com Откройте раздел Auth В разделе "Вход в систему" ​​откройте конфигурацию Google и добавьте значения в разделе "Конфигурация веб-SDK".

Сообщите мне, если это решит вашу проблему.

Ответ 8

Вы можете проверить при добавлении опции входа google Прежде чем использовать

GoogleSignInOptions gso = new GoogleSignInOptions
                    .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()
                    .build();

добавьте одну строку как показано в следующем коде

GoogleSignInOptions gso = new GoogleSignInOptions
                .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

после добавления этого, если вы получите ошибку, например

An internal error has occured. [ Invalid Idp Response: id_token audience mismatch. ]

затем Нажмите здесь, чтобы получить решение, это работает для меня.

Ответ 9

Если вы просто хотите использовать аутентификацию Firebase, и вы попали сюда из-за ошибки:

Не нашел класс "Com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"

Перейдите в https://console.firebase.google.com/ project/ [ваш проект]/аутентификация/провайдеры и включите поставщиков аутентификации, которые вы поддержка.

Ответ 10

У меня была аналогичная проблема с регистрацией пользователя, но, наконец, нашлось рабочее решение.

Удалите HAXM и переустановите его. решает мою проблему и успешно регистрирует пользователя для firebase auth:)

Ответ 11

если вы все делаете, но ничего не пытаетесь обновить свой ARM EABI.

Google API ARM EABI v7a Системный образ

Если у вашего эмулятора нет новых обновлений goggle, вы всегда получите ошибку auth.

Сделайте все предлагаемое в этом сообщении, а затем обновите изображение ARM EABI. Это решило мою проблему.

Ответ 12

Это может произойти, если у вас нет отпечатков SHA1, зарегистрированных в Firebase и в Google API. В обоих из них необходимо зарегистрировать два отпечатка пальца: из хранилища отладки и из производственного хранилища ключей (созданного при создании проекта apk в первый раз, когда вы вводите некоторые ключи для пароля в Android Studio).

Здесь показано, как получить SHA1 оттуда.

или запустите эту команду в каталоге C:\Users\<user name>\.android.

keytool -list -v -keystore debug.keystore

Ответ 13

Обмен опытом: Я столкнулся с одной и той же проблемой, я всюду искал в Google, но не смог найти точного ответа, даже если бы я делал все, как описано в документации Google Android. Неожиданно через день мое приложение работало нормально, и в тот же момент я получил электронное письмо от google, в котором говорится, что "Google API Explorer подключен к вашей учетной записи Google". И мне кажется, что Google требует времени, чтобы предоставить нам доступ, просто подождите этого письма, может быть, эта проблема не связана с плохим кодом.