Firebase API初始化在启动时失败

时间:2017-06-16 21:37:46

标签: android firebase android-support-library firebase-analytics support-v4

在应用启动时,以下内容正在打印到控制台:

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)
   //..
Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()' is inaccessible to class 'com.google.firebase.iid.zzg'

Firebase设置按照说明完成:

  1. classpath 'com.google.gms:google-services:3.1.0'已添加到顶级build.gradle
  2. apply plugin: 'com.google.gms.google-services'已添加到应用级build.gradle
  3. 运行./gradlew app:dependencies,我可以看到以下输出:

    com.google.firebase:firebase-core:9.0.0
         \--- com.google.firebase:firebase-analytics:9.0.0
              +--- com.google.android.gms:play-services-basement:9.0.0
              |    \--- com.android.support:support-v4:23.0.0 -> 25.3.1 (*)
              +--- com.google.firebase:firebase-common:9.0.0
              |    +--- com.google.android.gms:play-services-basement:9.0.0 (*)
              |    \--- com.google.android.gms:play-services-tasks:9.0.0
              |         \--- com.google.android.gms:play-services-basement:9.0.0 (*)
              \--- com.google.firebase:firebase-analytics-impl:9.0.0
                   +--- com.google.android.gms:play-services-base:9.0.0
                   |    +--- com.google.android.gms:play-services-basement:9.0.0 (*)
                   |    +--- com.google.firebase:firebase-common:9.0.0 (*)
                   |    \--- com.google.android.gms:play-services-tasks:9.0.0 (*)
                   +--- com.google.android.gms:play-services-basement:9.0.0 (*)
                   +--- com.google.firebase:firebase-iid:9.0.0
                   |    +--- com.google.android.gms:play-services-basement:9.0.0 (*)
                   |    \--- com.google.firebase:firebase-common:9.0.0 (*)
                   \--- com.google.firebase:firebase-common:9.0.0 (*)
    

    也许这是问题的一部分,也许不是,但我觉得奇怪的是,该插件的最新版本包含较旧版本的Firebase(9.0.0)而不是11.0.1

    此外,正如错误所述,问题是由以下原因引起的:

    java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()'
    

    这似乎表明v4支持库可能与此问题相关。

    导致这些问题的原因是什么,解决方案是什么?

1 个答案:

答案 0 :(得分:1)

当我运行依赖项任务时,在应用程序模块build.gradle中没有指定为依赖项的Google Play或Firebase库时,我会在输出的顶部看到此警告消息:

google-services plugin could not detect any version for com.google.android.gms or com.google.firebase, default version: 9.0.0 will be used.
please apply google-services plugin at the bottom of the build file.

向右滚动该消息,以查看:default version: 9.0.0 will be used

必须在build.gradle中的依赖关系块之后 >应用插件的原因是它扫描库列表以确定要用于其处理的版本。您的模块依赖项必须至少包含一个Firebase或Google Play库,以便插件可以选择版本号。

您在帖子的评论中指出明确取决于核心。那是在文档中的某个地方吗?查看每个Firebase API(Analytics,实时数据库,存储,崩溃报告等)的设置指南,其中每个都包含将API的库添加到依赖项的步骤。