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

时间:2016-05-19 16:18:15

标签: android firebase firebase-authentication

自从升级到最新版本的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) 

(...)

13 个答案:

答案 0 :(得分:28)

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

出现此问题的原因之一可能是您在Firebase中的登录方法&gt;可能会禁用身份验证控制台

我刚启用它并开始工作。

答案 1 :(得分:11)

您可以查看自己的Google Play服务版本吗?

来自Firebase oficial website

<强>先决条件

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

答案 2 :(得分:3)

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

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

并忘了导入核心:

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

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

答案 3 :(得分:1)

我发现了这个问题。问题是Guilherme提到的第一个先决条件,但不是粗体部分。虽然您的依赖关系还需要明确说明9. +的播放服务部分,设备本身也需要9. +已安装。在我的手机上进行调试工作正常,更新我的模拟器的图像也解决了问题。

答案 4 :(得分:1)

禁用即时运行对我有用。听起来很荒谬,我知道。我试过打扫这个项目。我尝试卸载/重新安装应用程序。最终成功的事情是禁用Instant Run。 叹息

答案 5 :(得分:1)

我已退出然后登录,它为我解决了这个问题。

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

如果这个问题包括在内,我将尝试拦截它。但实际上,这是Firebase系统中的一个错误。这是一个由多个用例引起的错误,这是另一个问题。

答案 6 :(得分:0)

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

Alfonso Gomez Jordana Manas

你好皮埃尔,

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

要执行此操作,请按以下步骤操作:

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

    在“登录”方法下,打开Goog​​le配置,并将所有客户端ID添加到外部项目的客户端ID白名单中。 如果您在网络应用程序上使用Google登录: 单击以打开您的Web客户端ID,并记下客户端ID和密码。 将此客户端ID输入Firebase项目的配置: 转到https://console.firebase.google.com的Firebase控制台 打开Auth部分 在“登录”方法下,打开Goog​​le配置,然后在“Web SDK配置”部分下添加值。

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

答案 7 :(得分:0)

您可以在添加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来获取解决方案对我有用。

答案 8 :(得分:0)

如果您只想使用Firebase身份验证,并且因为错误而来到这里:

  

没找到上课   “com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor”

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

答案 9 :(得分:0)

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

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

答案 10 :(得分:0)

如果您做了所有事情,但没有尝试更新您的ARM EABI。

  

Google API ARM EABI v7a系统映像

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

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

答案 11 :(得分:0)

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

Here显示了如何从那里获取SHA1。

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

keytool -list -v -keystore debug.keystore

答案 12 :(得分:0)

分享我的经验: 我遇到了同样的问题,我在谷歌上搜索但找不到确切的答案,即使我正在做谷歌Android文档记录的所有内容。一天之后突然间,我的应用程序工作正常,同时我从谷歌收到了“Google API Explorer连接到您的Google帐户”的电子邮件。而且我认为谷歌需要时间来授予我们访问权限,只需等待这封电子邮件,也许这个问题与糟糕的代码无关。