【问题标题】:Android Firebase DynamiteModule: Failed to load module descriptorAndroid Firebase DynamiteModule:无法加载模块描述符
【发布时间】:2016-09-16 16:02:27
【问题描述】:

自从升级到最新版本的 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 服务?
  • 尝试清理项目并禁用即时运行
  • 这些是(部分)我的依赖项:compile 'com.google.android.gms:play-services-analytics:9.0.0'compile 'com.google.android.gms:play-services-location:9.0.0''com.google.android.gms:play-services-gcm:9.0.0'compile 'com.google.android.gms:play-services-wearable:9.0.0'compile 'com.google.firebase:firebase-core:9.0.0'compile 'com.google.firebase:firebase-database:9.0.0'compile 'com.google.firebase:firebase-crash:9.0.0'compile 'com.google.firebase:firebase-auth:9.0.0'compile 'com.google.firebase:firebase-messaging:9.0.0'
  • 同样的错误。看来我们现在无法修复。
  • 我也遇到了这个问题,下面的解决方案并没有为我解决。我在我的模拟器上使用最新的 Android Studio 测试版和 Google Play Services 9.0.80。我的 build.gradle 中的 Google Play Services 9.0.0。我看到一个相同的错误。

标签: android firebase firebase-authentication


【解决方案1】:

分享我的经验: 我遇到了同样的问题,我到处搜索,但找不到确切的答案,即使我按照谷歌 Android 文档的记录做所有事情。一天后突然,我的应用程序运行良好,同时我收到了来自 google 的电子邮件,说明“Google APIs Explorer 已连接到您的 Google 帐户”。在我看来,谷歌需要时间来授予我们访问权限,请等待这封电子邮件,也许这个问题与错误代码无关。

【讨论】:

    【解决方案2】:

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

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

    或在C:\Users\&lt;user name&gt;\.android 目录上运行此命令。

    keytool -list -v -keystore debug.keystore
    

    【讨论】:

      【解决方案3】:

      很遗憾,Firebase 初始化错误如此不简单,因此开发人员需要猜测出了什么问题。就我而言,我只导入了:

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

      忘了导入核心:

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

      也许它会对某人有所帮助,祝你好运!

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 我在 11.4.2 中遇到了完全相同的问题。你解决了吗?
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          Google API ARM EABI v7a 系统映像

          如果您的模拟器没有新的护目镜更新,您将始终收到身份验证错误。

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

          【讨论】:

            【解决方案7】:

            这个对另一个问题的回答使我的应用通过了身份验证

            阿方索·戈麦斯·乔丹娜·玛纳斯

            你好皮埃尔,

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

            为此,请按以下步骤操作:

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

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

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

            【讨论】:

            • 谢谢,但我正在跟踪我的另一篇关于身份验证问题的帖子。我们应该为 Class Not Found 问题保留这个线程。
            【解决方案8】:

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

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

            【讨论】:

              【解决方案9】:

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

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

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

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                  【解决方案11】:

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

                  此问题的一个原因可能是,您的 Firebase 中的登录方法 > 身份验证仪表板 可能被禁用。

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

                  【讨论】:

                  • 解决了我的问题。我是匿名登录的。谢谢提醒!
                  • 谢谢@chandra 我浪费了 2 天,但是当我去身份验证并启用电子邮件/密码登录方法时,它对我有用。
                  • Firebase 中的登录方法在哪里 > Auth Dashboard?
                  【解决方案12】:

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

                  【讨论】:

                  • 黑体部分的第一部分表示该设备还需要安装 9.+ ;)
                  • 能否分享一下代码sn-ps如何解决?
                  • 这是否意味着如果用户没有获得最新的“Google Play Services”,应用就会崩溃?
                  【解决方案13】:

                  您能检查一下您的 Google Play 服务版本吗?

                  来自 Firebase 官方website

                  先决条件

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

                  【讨论】:

                  • 这不是 Play Services 版本的问题。我有同样的问题,我使用的是 9.0.0 版
                  • 好的,您可以尝试不使用即时运行来运行吗?
                  • 也没有即时运行。
                  • 支持库版本?
                  • 您还在使用最新版本的 google play services gradle 插件:`classpath 'com.google.gms:google-services:3.0.0'`?
                  猜你喜欢
                  • 2016-09-26
                  • 1970-01-01
                  • 2018-06-13
                  • 1970-01-01
                  • 2022-08-09
                  • 1970-01-01
                  • 2016-04-04
                  • 1970-01-01
                  • 2017-09-11
                  相关资源
                  最近更新 更多