【问题标题】:FirebaseInitProvider: FirebaseApp initialization unsuccessfulFirebaseInitProvider:FirebaseApp 初始化不成功
【发布时间】:2016-09-16 05:53:41
【问题描述】:

我们已关注Add Firebase to your Android Project,但在 Firebase 控制台中看不到应用接收数据。
当我们启动应用程序时,日志显示:

FirebaseInitProvider: FirebaseApp initialization unsuccessful

这是什么意思?我们做错了什么?
我在文档中找不到此错误,在 StackOverflow 中也找不到。

【问题讨论】:

  • 同样的问题。
  • Firebase 一直在应用旁边显示一个微调器,当您点击它时,分析和崩溃都会引发错误。从谷歌控制台导入的项目会发生这种情况,新项目似乎工作正常......
  • 我尝试在firebase中创建一个新项目,但问题仍然存在。

标签: android firebase gradle


【解决方案1】:

这是什么意思?我们做错了什么?

假设身份验证没有成功。

a) 项目级别的buildscript repositoriesdependencies build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        
        // Android Gradle Plugin
        classpath "com.android.tools.build:gradle:3.3.2"

        // Google Services Plugin
        classpath "com.google.gms:google-services:4.2.0"
    }
}

b) 模块级别的dependencies app/build.gradle(Android Intel x86 映像可能仍安装了以前版本的 Google Play 服务,例如,10.2.0 在当前的x86 模拟器,而例如11.8.0 在我的物理ARM 设备上运行)。引用 play-servicesfirebase-core 将包括它们的 所有 模块,除非不包括它们。 更新:现在必须单独引用所有库。引用 com.google.android.gms:play‐servicescom.google.firebase:firebase-core 不再起作用,因为 15.0.0

android {
    ...
    buildTypes {
        debug {
            // suffixing the package name for debug builds,
            // in order to partially mute the crash-reporting
            // is an *optional* configuration (see below):
            applicationIdSuffix ".debug"
        }
    }
}

dependencies {

    // Google Play Services
    // https://developers.google.com/android/guides/releases
    implementation "com.google.android.gms:play-services-base:15.0.1"
    implementation "com.google.android.gms:play-services-auth:16.0.0"
    implementation "com.google.android.gms:play-services-identity:15.0.1"

    // Google Firebase
    // https://firebase.google.com/support/release-notes/android
    implementation "com.google.firebase:firebase-core:16.0.1"
    implementation "com.google.firebase:firebase-auth:16.0.3"
    implementation "com.google.firebase:firebase-config:16.0.0"
    implementation "com.google.firebase:firebase-storage:16.0.1"
    implementation "com.google.firebase:firebase-database:16.0.1"
    implementation "com.google.firebase:firebase-messaging:17.3.0"
    implementation "com.google.firebase:firebase-appindexing:16.0.1"
    implementation "com.google.firebase:firebase-functions:16.1.0"
    implementation "com.google.firebase:firebase-invites:16.0.1"
    // implementation "com.google.firebase:firebase-crash:16.0.1"
    implementation "com.google.firebase:firebase-ads:15.0.1"
    implementation "com.google.firebase:firebase-firestore:17.0.4"
    implementation "com.google.firebase:firebase-perf:16.0.0"

    // the inapp messaging may cause dependency conflicts: 
    // implementation "com.google.firebase:firebase-inappmessaging:17.0.0"
    // implementation "com.google.firebase:firebase-inappmessaging-display:17.0.0"
}

c) mobile/build.gradle 的底线应该是:

// apply the Google Services Plugin
apply plugin: "com.google.gms.google-services"

d) 确保在app/google-services.json 上提供(下载的)凭据;在 Firebase 控制台上,必须添加 both SHA1(或 SHA256)哈希,调试 发布密钥,以使两个构建都能正确验证;一旦全部匹配,它应该报告:

I/FirebaseInitProvider: FirebaseApp initialization successful

这一切都有据可查,只需查看Setup Google Play ServicesFirebase QuickstartCrash Reporting;虽然我发现 Firebase 博客上的这篇文章非常有用:Organizing your Firebase-enabled Android app builds,因为它解释了如何部分静音崩溃报告。 release notes 总是宣布更新和更改。

【讨论】:

  • 我想问一下为什么我们需要 classpath 'com.google.gms:google-services:3.0.0' 因为最新版本是:9.4.0?
  • @Dharvikshah 因为只有一个com.google.gms:google-services:3.0.0。一个打包为 Gradle 插件,另一个打包为库。 google-services != play-services。上面还加了一些cmets。
  • 这导致我的案例出现问题:“错误:任务':app:transformClassesWithDexForDebug'的执行失败。> com.android.build.api.transform.TransformException: com.android.ide.common .process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: 方法 ID 不在 [0, 0xffff]: 65536" 中。这是什么问题,我该如何解决?
  • @androiddeveloper 你可能会超过 64K dex 限制,multiDexEnabled true 应该会有所帮助 - 而在 Android > 5.0 上,这应该是默认设置。见developer.android.com/studio/build/multidex.html(这不是Firebase的问题)
  • @syslogic 不可能。这是一个非常小的项目。
【解决方案2】:

当您的app/build.gradle 中没有apply plugin: 'com.google.gms.google-services' 时会发生这种情况。尝试添加它。

还要确保您在 Android SDK 管理器中安装了 Google Play 服务 SDK。

【讨论】:

    【解决方案3】:

    我建议您检查的第一件事是:

    1) 您是否已将 <uses-permission android:name="android.permission.INTERNET" /> 包含在您的清单中?

    【讨论】:

    • 好一个!有时会发生
    【解决方案4】:

    确保您已将此行添加到 App 级别的 build.gradle 文件中

    apply plugin: 'com.google.gms.google-services'
    

    【讨论】:

      【解决方案5】:

      我也遇到了类似的问题。我已将我的 Google 开发人员项目导入 Firebase,并按照 Android Studio 应用程序和 Firebase 控制台中的说明完成了所有步骤,即添加依赖项、google-services.json 文件并再次构建。

      它仍然不会向 Firebase 控制台发送数据。因此,在通过 logcat 时,Firebase 无法初始化,因为 google_app_id 似乎丢失了。

      经过反复试验,我不得不在我的res/values/strings.xml 文件中添加一个新的字符串资源。

          <string name="google_app_id">YOUR_GOOGLE_APP_ID</string>
      

      Google App ID 位于您从 Firebase 控制台下载的 google_services.json 文件中,标题为 mobilesdk_app_id

      "client": [
          {
            "client_info": {
              "mobilesdk_app_id": "SOMETHING"
            }
          .
          .
          .
      

      复制mobilesdk_app_id 并将其粘贴到res/values/strings.xml 文件中名为google_app_id 的字符串资源中。

      重建代码,它应该可以工作。 :)

      【讨论】:

        【解决方案6】:

        整个问题的发生有两个原因:

        1.您没有在 mainfest 中获得许可

        <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
        <uses-permission android:name="android.permission.INTERNET" />
        

        [在此处输入图片描述][1]

        2。您的 gradle 构建版本有错误- 项目级依赖

        classpath 'com.google.gms:google-services:4.1.0'

        替换为

        classpath 'com.google.gms:google-services:4.0.1'

        【讨论】:

          【解决方案7】:

          就我而言,我在 Gradle 中做的所有事情都是正确的。即使它显示FirebaseApp initialization unsuccessful

          我在清单中添加了com.google.android.c2dm.permission.RECEIVE permission,这解决了我的问题。

           <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
           <uses-permission android:name="android.permission.INTERNET" />
          

          【讨论】:

            【解决方案8】:

            就我而言,我试图选择性地编译 Google Play 服务。 而不是使用

            compile 'com.google.android.gms:play-services:9.4.0'
            

            如所述:https://developers.google.com/android/guides/setup#ensure_devices_have_the_google_play_services_apk

            我从 Google Play 服务中手动添加了地图和其他一些依赖模块

            compile 'com.google.android.gms:play-services-maps:9.4.0'
            compile 'com.google.android.gms:play-services-places:9.4.0'
            

            不幸的是,Firebase 在此之后停止工作。

            结果我不得不回滚并返回使用

            compile 'com.google.android.gms:play-services:9.4.0'
            

            而不是选择性地。

            【讨论】:

              【解决方案9】:

              我得到了相同的 Logcat 输出。

              通过在我的 app/build.gradle 中将我的 Google Play Services 依赖项更新为 9.0.0 来修复它

              和更新

              buildScript {
                  //...
                  dependencies {
                      //...
                      classpath 'com.google.gms:google-services:3.0.0'
                  }
              }
              

              在我的项目 build.gradle 到 3.0.0

              【讨论】:

                【解决方案10】:

                在build.gradle(项目级别)

                改变

                    classpath 'com.google.gms:google-services:4.1.0'
                

                到这里

                    classpath 'com.google.gms:google-services:4.0.1'
                

                【讨论】:

                  猜你喜欢
                  • 2016-10-26
                  • 2017-03-03
                  • 2016-10-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-09-30
                  • 1970-01-01
                  • 2023-04-03
                  相关资源
                  最近更新 更多