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 требует времени, чтобы предоставить нам доступ, просто подождите этого письма, может быть, эта проблема не связана с плохим кодом.