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) 
(...)

我遇到了同样的问题,我在Firebase控制台中发现了一个错误。

出现此问题的原因之一可能是,您在Firebase>Auth Dashboard内的登录方法可能被禁用。

我刚启用它,它就开始工作了。

你能检查你的Google Play服务版本吗?

来自Firebase官方网站:

先决条件

  • 运行Google Play服务9.0.0或更高版本的Android设备
  • Android SDK Manager中的Google Play服务SDK
  • Android Studio 1.5或更高版本
  • 安卓工作室项目及其软件包名称

非常遗憾的是,Firebase初始化错误并不简单,因此开发人员需要猜测出了什么问题。在我的情况下,我只进口:

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

并且忘记导入也核心:

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

也许它会帮助别人,祝你好运!

我发现了这个问题。这个问题是Guilherme提到的第一个先决条件,但不是粗体部分。。尽管您的依赖项还需要显式地声明播放服务部分的9.+,但设备本身也需要安装9.+。在我的手机上调试很好,更新模拟器的图像也解决了这个问题。

禁用Instant Run对我很有效。我知道,听起来很荒谬。我试着清理这个项目。我尝试卸载/重新安装该应用程序。最终成功的是禁用了Instant Run叹息

我先注销,然后登录,它为我解决了这个问题。

可能是由于某种同步,FB的东西还没有实现。

如果这个问题存在,我会尝试拦截它。但实际上,这是Firebase系统中的一个错误。这是一个由多个用例引起的错误,这本身就是另一个问题。

您可以在添加谷歌登录选项的同时签出在我们使用之前

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. ]

然后单击此处获取适用于我的解决方案。

如果您只想使用Firebase身份验证,而您在这里是因为错误:

找不到类"com.google.android.gms.dynamine.descriptors.com.google.firebase.auth.ModuleDescriptor">

转到https://console.firebase.google.com/project/[您的项目]/authentication/providers并启用您支持的身份验证提供程序。

我在注册用户时遇到了类似的问题,但最终找到了一个有效的解决方案。

卸载并重新安装HAXM解决了我的问题,它成功地将用户注册为firebase auth:)

另一个问题的答案使我的应用程序验证

Alfonso Gomez Jordana Manas

你好,皮埃尔,

在将现有的Google OAuth 2.0客户端ID与新的Auth API一起使用之前,您必须在Firebase控制台中手动将其列入白名单。

为此,请执行以下步骤:

  • 转到Google API控制台中的凭据部分
  • 从右上角选择您之前配置谷歌登录的项目
  • 转到OAuth 2.0客户端ID部分如果您在Android或iOS应用程序上使用谷歌登录:注意与为应用程序注册的所有条目相对应的客户端ID字符串
  • 将这些客户端ID输入到Firebase项目的配置中:
  • 转到Firebase控制台,网址为https://console.firebase.google.com
  • 打开Auth部分

    在登录方法下,打开Google配置,并将所有客户端ID添加到外部项目的客户端ID白名单中。如果您在网络应用程序上使用谷歌登录:单击打开您的web客户端ID,并记下客户端ID和机密。将此客户端ID输入到Firebase项目的配置中:转到Firebase控制台,网址为https://console.firebase.google.com打开"身份验证"部分在登录方法下,打开Google配置,并在Web SDK配置部分下添加值。

如果这能解决您的问题,请告诉我。

如果您做了所有事情,但一无所获,请尝试更新您的ARM EABI。

谷歌API ARM EABI v7a系统图像

如果您的模拟器没有新的goggle更新,您将始终收到auth错误。

执行本文中建议的所有操作,然后更新ARM EABI映像。这解决了我的问题。

如果您没有在Firebase和Google API中注册SHA1指纹,也可能发生这种情况。两者都必须注册两个指纹:来自调试密钥库和生产密钥库(当您在Android Studio上输入一些密码密钥时,第一次创建项目的apk时生成)。

这里展示了如何从那里获得SHA1。

或者在C:Users<user name>.android目录上运行此命令。

keytool -list -v -keystore debug.keystore

分享我的经验:我也面临着同样的问题,我在谷歌上到处搜索,但找不到确切的答案,即使我做的一切都是谷歌安卓文档记录的。突然过了一天,我的应用程序运行良好,就在这时,我收到了谷歌的电子邮件,上面写着"谷歌API浏览器连接到了你的谷歌账户"。在我看来,谷歌需要时间来授予我们访问权限,只需等待这封电子邮件,也许这个问题与坏代码无关。

最新更新