Android Firebase DynamiteModule:加载模块描述符失败
Android Firebase DynamiteModule: Failed to load module descriptor
自从升级到最新版本的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)
(...)
你能检查一下你的 Google Play 服务版本吗?
来自 Firebase 官方 website:
先决条件
- 一台Android设备运行Google播放服务9.0.0或更高版本
- 来自 Android SDK 管理器的 Google 播放服务 SDK
- Android Studio 1.5 或更高版本
- 一个 Android Studio 项目及其包名称。
我发现了问题。问题是 Guilherme 提到的第一个先决条件,但不是粗体部分。虽然您的依赖项还需要明确说明播放服务部分的 9.+,设备本身也需要安装 9.+。在我的 phone 上调试工作正常,更新我的模拟器的图像也解决了那里的问题。
这个对另一个问题的回答使我的应用进行了身份验证
阿方索·戈麦斯乔丹娜·玛纳斯
你好皮埃尔,
您必须在 Firebase 控制台中手动将现有的 Google OAuth 2.0 客户端 ID 列入白名单,然后才能将其与新的 Auth APIs 一起使用。
为此,请按照下列步骤操作:
- 转到 Google API 控制台中的“凭据”部分。
- Select 从您之前配置的项目右上角 Google 登录。
- 转到 OAuth 2.0 客户端 ID 部分
如果您在 Android 或 iOS 应用程序上使用 Google 登录:
记下与为您的应用程序注册的所有条目对应的客户端 ID 字符串。
- 将这些客户端 ID 输入到您的 Firebase 项目的配置中:
- 在 https://console.firebase.google.com
转到 Firebase 控制台
打开授权部分
在 Sign-In methods 下,打开 Google 配置,并将您所有的客户端 ID 添加到来自外部项目的客户端 ID 白名单中。
如果您在 Web 应用程序上使用 Google 登录:
单击以打开您的 Web 客户端 ID 并记下客户端 ID 和密码。
将此客户端 ID 输入到您的 Firebase 项目的配置中:
在 https://console.firebase.google.com 转到 Firebase 控制台
打开授权部分
在登录方法下,打开 Google 配置,并在 Web SDK 配置部分下添加值。
如果这能解决您的问题,请告诉我。
我遇到了同样的问题,我发现我在 Firebase 控制台中犯了一个错误。
出现此问题的原因之一可能是您的 Firebase > Auth Dashboard 中的登录方法 可能已被禁用。
我刚刚启用它,它开始工作了。
您可以在添加 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. ]
然后 Click 在这里获取适合我的解决方案。
如果您只是想使用 Firebase 身份验证而由于错误而来到这里:
Didn't find class
"com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
转到 https://console.firebase.google.com/project/[your project]/authentication/providers 并启用您支持的身份验证提供程序。
我在注册用户时遇到了类似的问题,但最终找到了可行的解决方案。
卸载 HAXM 并重新安装它 解决了我的问题,它成功地为用户注册了 firebase auth :)
如果你什么都做了但什么都没有尝试更新你的 ARM EABI。
Google APIs ARM EABI v7a System Image
如果您的模拟器没有新的护目镜更新,您将始终收到身份验证错误。
执行此 post 中建议的所有操作,然后更新 ARM EABI 映像。
这解决了我的问题。
禁用 Instant 运行 对我有用。听起来很荒谬,我知道。我尝试清理项目。我尝试了 uninstalling/reinstalling 这个应用程序。最终成功的方法是禁用 Instant 运行。 感叹
我注销然后登录,它为我解决了这个问题。
可能是由于某种同步原因,FB 内容尚未实现。
如果有这个问题我会尽量拦截。但实际上,这是 Firebase 系统中的一个错误。这是一个由多个用例引起的错误,这本身就是另一个问题。
很遗憾 Firebase 初始化错误如此不简单,因此开发人员需要猜测出了什么问题。就我而言,我只导入了:
compile 'com.google.firebase:firebase-auth:10.2.0'
忘记导入核心:
compile 'com.google.firebase:firebase-core:10.2.0'
也许它会对某人有所帮助,祝你好运!
如果您没有在 Firebase 和 Google API 中注册 SHA1 指纹,也可能会发生这种情况。它们都必须注册两个指纹:来自调试密钥库和生产密钥库(当您在 Android Studio 上输入一些密码密钥时首次创建项目的 apk 时生成)。
Here 展示了如何从那里获取 SHA1。
或 运行 此命令在 C:\Users\<user name>\.android
目录上。
keytool -list -v -keystore debug.keystore
分享我的经验:
我遇到了同样的问题,我 googled 无处不在,但找不到确切的答案,即使我按照 Google Android 文档所做的一切。一天后突然,我的应用程序运行良好,同时我收到了来自 google 的电子邮件,说明 "Google APIs Explorer connected to your Google Account"。在我看来 google 需要时间来授予我们访问权限,请等待这封电子邮件,也许这个问题与错误代码无关。
自从升级到最新版本的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)
(...)
你能检查一下你的 Google Play 服务版本吗?
来自 Firebase 官方 website:
先决条件
- 一台Android设备运行Google播放服务9.0.0或更高版本
- 来自 Android SDK 管理器的 Google 播放服务 SDK
- Android Studio 1.5 或更高版本
- 一个 Android Studio 项目及其包名称。
我发现了问题。问题是 Guilherme 提到的第一个先决条件,但不是粗体部分。虽然您的依赖项还需要明确说明播放服务部分的 9.+,设备本身也需要安装 9.+。在我的 phone 上调试工作正常,更新我的模拟器的图像也解决了那里的问题。
这个对另一个问题的回答使我的应用进行了身份验证
阿方索·戈麦斯乔丹娜·玛纳斯
你好皮埃尔,
您必须在 Firebase 控制台中手动将现有的 Google OAuth 2.0 客户端 ID 列入白名单,然后才能将其与新的 Auth APIs 一起使用。
为此,请按照下列步骤操作:
- 转到 Google API 控制台中的“凭据”部分。
- Select 从您之前配置的项目右上角 Google 登录。
- 转到 OAuth 2.0 客户端 ID 部分 如果您在 Android 或 iOS 应用程序上使用 Google 登录: 记下与为您的应用程序注册的所有条目对应的客户端 ID 字符串。
- 将这些客户端 ID 输入到您的 Firebase 项目的配置中:
- 在 https://console.firebase.google.com 转到 Firebase 控制台
打开授权部分
在 Sign-In methods 下,打开 Google 配置,并将您所有的客户端 ID 添加到来自外部项目的客户端 ID 白名单中。 如果您在 Web 应用程序上使用 Google 登录: 单击以打开您的 Web 客户端 ID 并记下客户端 ID 和密码。 将此客户端 ID 输入到您的 Firebase 项目的配置中: 在 https://console.firebase.google.com 转到 Firebase 控制台 打开授权部分 在登录方法下,打开 Google 配置,并在 Web SDK 配置部分下添加值。
如果这能解决您的问题,请告诉我。
我遇到了同样的问题,我发现我在 Firebase 控制台中犯了一个错误。
出现此问题的原因之一可能是您的 Firebase > Auth Dashboard 中的登录方法 可能已被禁用。
我刚刚启用它,它开始工作了。
您可以在添加 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. ]
然后 Click 在这里获取适合我的解决方案。
如果您只是想使用 Firebase 身份验证而由于错误而来到这里:
Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
转到 https://console.firebase.google.com/project/[your project]/authentication/providers 并启用您支持的身份验证提供程序。
我在注册用户时遇到了类似的问题,但最终找到了可行的解决方案。
卸载 HAXM 并重新安装它 解决了我的问题,它成功地为用户注册了 firebase auth :)
如果你什么都做了但什么都没有尝试更新你的 ARM EABI。
Google APIs ARM EABI v7a System Image
如果您的模拟器没有新的护目镜更新,您将始终收到身份验证错误。
执行此 post 中建议的所有操作,然后更新 ARM EABI 映像。 这解决了我的问题。
禁用 Instant 运行 对我有用。听起来很荒谬,我知道。我尝试清理项目。我尝试了 uninstalling/reinstalling 这个应用程序。最终成功的方法是禁用 Instant 运行。 感叹
我注销然后登录,它为我解决了这个问题。
可能是由于某种同步原因,FB 内容尚未实现。
如果有这个问题我会尽量拦截。但实际上,这是 Firebase 系统中的一个错误。这是一个由多个用例引起的错误,这本身就是另一个问题。
很遗憾 Firebase 初始化错误如此不简单,因此开发人员需要猜测出了什么问题。就我而言,我只导入了:
compile 'com.google.firebase:firebase-auth:10.2.0'
忘记导入核心:
compile 'com.google.firebase:firebase-core:10.2.0'
也许它会对某人有所帮助,祝你好运!
如果您没有在 Firebase 和 Google API 中注册 SHA1 指纹,也可能会发生这种情况。它们都必须注册两个指纹:来自调试密钥库和生产密钥库(当您在 Android Studio 上输入一些密码密钥时首次创建项目的 apk 时生成)。
Here 展示了如何从那里获取 SHA1。
或 运行 此命令在 C:\Users\<user name>\.android
目录上。
keytool -list -v -keystore debug.keystore
分享我的经验: 我遇到了同样的问题,我 googled 无处不在,但找不到确切的答案,即使我按照 Google Android 文档所做的一切。一天后突然,我的应用程序运行良好,同时我收到了来自 google 的电子邮件,说明 "Google APIs Explorer connected to your Google Account"。在我看来 google 需要时间来授予我们访问权限,请等待这封电子邮件,也许这个问题与错误代码无关。