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


69

由于升级到最新版本的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服务?
Guilherme Torres Castro

尝试清理项目并禁用即时运行
Guilherme Torres Castro

这些是(部分)我的依赖项: 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'
Marthijn Bontekoning

2
同样的错误。似乎我们现在无法修复。
Khang .NT

2
我也遇到了这个问题,下面的解决方案并没有为我解决。我使用的是测试版频道以外的最新Android Studio,并且在模拟器上使用了Google Play Services 9.0.80。我的build.gradle中的Google Play服务9.0.0。我看到一个相同的错误。
乍得宾厄姆

Answers:


11

您可以检查您的Google Play服务版本吗?

从Firebase官方网站

先决条件

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

4
Play服务版本不是问题。我有相同的问题,我使用的是9.0.0版
pdegand59 '16

好的,您可以尝试不立即运行而运行吗?
Guilherme Torres Castro

也没有即时运行。
pdegand59 '16

支持库版本?
Guilherme Torres Castro

您是否还在使用Google Play服务gradle插件的最新版本:`classpath'com.google.gms:google-services:3.0.0'`?
Guilherme Torres Castro

28

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

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

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


解决了我的问题。我正在匿名登录。感谢您的提醒!
阿诺·巴柳

感谢@chandra我已经浪费了2天,但是当我转到Authentication并启用Email / Password登录方法时,它对我有用。
Zulqarnain

4
Firebase>身份验证仪表板中的登录方法在哪里?
Marcel

3

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

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

忘了导入也核心:

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

也许它将帮助某人,祝你好运!


1

我发现了问题。这个问题是提到Guilherme的第一个先决条件,但不是黑体字。尽管您的依存关系也需要明确声明Play服务部分的9. +,但设备本身也需要安装9. +。在手机上进行调试可以正常进行,更新模拟器的图像也可以解决该问题。


粗体部分的第一部分表明该设备还需要安装9. +;)
Guilherme Torres Castro

您能否分享代码片段如何修复?
尼克·莫斯卡连科

2
这是否意味着如果用户没有最新的“ Google Play服务”,该应用就会崩溃?
斯特芬

1

禁用Instant Run对我有用。听起来很荒谬,我知道。我尝试清理该项目。我尝试卸载/重新安装该应用程序。最终解决问题的方法是禁用即时运行。


1

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

可能是由于某种同步而未实现FB的东西。

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


我在11.4.2中遇到了完全相同的问题。您设法解决了吗?
txedo

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

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



0

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

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


0

另一个问题的答案使我的应用程序可以通过身份验证

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

你好皮埃尔,

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

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

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

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

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


谢谢,但我正在跟踪我的其他帖子以了解身份验证问题。对于“找不到类”问题,我们应保持此线程为onlt。
pdegand59 '16

0

如果您进行了所有操作,但是却一无所获,请尝试更新您的ARM EABI。

Google APIs ARM EABI v7a系统映像

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

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


0

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

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

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

keytool -list -v -keystore debug.keystore

0

分享我的经验:我遇到了同样的问题,尽管到Google Android文档中所做的所有事情我都在所有地方使用google搜索,但找不到确切的答案。一天后突然,我的应用程序运行正常,与此同时,我收到了来自Google的电子邮件,内容为“已将Google APIs Explorer连接到您的Google帐户”。在我看来,Google需要时间来授予我们访问权限,只需等待这封电子邮件,也许此问题与错误代码无关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.