Android Firebase DynamiteModule:无法加载模块描述符

自从升级到最新版本的Firebase(9.0.0)后,通过signInWithEmailAndPassword()对用户进行身份validation时,我无法摆脱以下两个错误。 任何人的想法是怎么回事?

  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官方网站 :

先决条件

  • 运行Google Play服务9.0.0或更高版本的Android设备
  • Android SDKpipe理器中的Google Play服务SDK
  • Android Studio 1.5或更高版本
  • 一个Android Studio项目及其包名称。

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

此问题的原因之一可能是,您在Firebase>身份validation仪表板中的login方法可能被禁用。

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

Firebase初始化错误非常令人难过,所以开发人员需要猜测出了什么问题。 在我的情况下,我只导入:

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

忘了导入也是核心:

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

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

我发现这个问题。 这个问题是Guilherme提到的第一个先决条件,但不是粗体部分。尽pipe你的依赖关系也需要显式声明9. + play服务部分, 但是设备本身也需要安装9. + 。 在我的手机上debugging工作正常,更新我的模拟器的图像也解决了那里的问题。

禁用即时运行为我工作。 听起来很可笑,我知道。 我试图清理这个项目。 我试着卸载/重新安装应用程序。 终于做到这一点的事情是禁用即时运行。

我注销,然后login,它解决了这个问题给我。

FB的东西可能从某种同步没有实现。

如果这个问题组成,我会试着拦截它。 但是可以肯定的是,这是Firebase系统中的一个错误。 这是一个由多个用例引起的错误,这是另外一个问题。

您可以在添加谷歌login选项时退房在使用之前

 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身份validation,并且因为错误而到达此处:

没有find类“com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor”

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

我有类似的问题注册用户,但终于find了一个工作的解决scheme。

卸载HAXM并重新安装它解决了我的问题,它成功地注册用户到Firebase身份validation:)

对另一个问题的答案使我的应用程序进行身份validation

阿方索·戈麦斯Jordana Manas

皮埃尔你好,

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

为此,请按照下列步骤操作:

  • 转到Google API控制台中的“凭据”部分。
  • 从右上angularselect您之前configurationGooglelogin的项目。
  • 转至OAuth 2.0客户端ID部分如果您在Android或iOS应用程序上使用Googlelogin:请记下与为您的应用程序注册的所有条目相对应的客户端IDstring。
  • 将这些客户IDinput到Firebase项目的configuration中:
  • 转到Firebase控制台https://console.firebase.google.com
  • 打开Auth部分

    在login方法下,打开Goog​​leconfiguration,并将所有客户端ID添加到外部项目的客户端ID白名单中。 如果您在Web应用程序上使用Googlelogin,请执行以下操作:单击以打开您的Web客户端ID,并记下客户端ID和密码。 将此客户IDinput到您的Firebase项目configuration中:转到Firebase控制台https://console.firebase.google.com打开“身份validation”部分在login方法下,打开Goog​​leconfiguration并在Web SDK下添加值configuration部分。

让我知道这是否解决您的问题。

如果你做了一切,但你什么都没有尝试更新你的ARM EABI。

Google API ARM EABI v7a系统映像

如果您的模拟器没有新的护目镜更新,您将始终得到auth错误。

做这个post中的所有build议,然后更新ARM EABI图像。 这解决了我的问题。

当您没有在Firebase和Google API中注册SHA1指纹时,也可能会发生这种情况。 在两者中都必须注册两个指纹:从debugging密钥库和生产密钥库(当您在Android Studio上input密码密钥时首次创build项目的apk时生成)。

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

或者在C:\Users\<user name>\.android目录下运行这个命令。

 keytool -list -v -keystore debug.keystore 

分享我的经验:我面临同样的问题,我到处search,但无法find确切的答案,即使我正在按照Google Android文档所述做的一切。 一天之后突然间,我的应用程序工作正常,同时我收到了谷歌的电子邮件,声明“Google API浏览器已连接到您的Google帐户”。 而在我看来,谷歌需要时间来授予我们访问权限,只是等待这封电子邮件,也许这个问题是不相关的坏代码。