FirebaseInitProvider:FirebaseApp 初始化不成功

Posted

技术标签:

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

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

FirebaseInitProvider: FirebaseApp initialization unsuccessful

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

【问题讨论】:

同样的问题。 Firebase 一直在应用旁边显示一个微调器,当您点击它时,分析和崩溃都会引发错误。从谷歌控制台导入的项目会发生这种情况,新项目似乎工作正常...... 我尝试在firebase中创建一个新项目,但问题仍然存在。 【参考方案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 Services、Firebase Quickstart 或Crash 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'

【讨论】:

以上是关于FirebaseInitProvider:FirebaseApp 初始化不成功的主要内容,如果未能解决你的问题,请参考以下文章

在 android 中找不到 FirebaseInitProvider

没有找到“com.google.firebase.provider.FirebaseInitProvider”类?

找不到类“com.google.firebase.provider.FirebaseInitProvider”

“无法获取提供程序 com.google.firebase.provider.FirebaseInitProvider”错误路径 Android

.ClassNotFoundException:在路径上找不到类“com.google.firebase.provider.FirebaseInitProvider”:DexPathList

没有找到类“com.google.firebase.provider.FirebaseInitProvider,在使用工作室构建从 Eclipse 升级 apk 时