在此过程中未初始化 FirebaseApp - 此外 FirebaseApp.initializeApp() 不起作用。依赖问题?

FirebaseApp is not initialized in this process - Additionally FirebaseApp.initializeApp() doesn't work. Dependency Problem?

我在项目 gradle 文件中添加了以下行:

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

这进入模块gradle文件:

dependencies {

    ...    

    // GPS
    implementation 'com.google.android.gms:play-services-location:16.0.0'

    // FireBase
    implementation 'com.google.firebase:firebase-core:16.0.4'
    implementation 'com.google.firebase:firebase-iid:17.0.4'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'

    implementation 'com.google.android.gms:play-services-gcm:16.0.0'
}

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

并将其添加到 AndroidManifest.xml

<service
        android:name=".pushclient.PushService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
</service>

我从 FireBase 控制台下载了 google-services.json 并将其放置在正确的位置

但是我在尝试使用 Firebase 时遇到以下错误:

Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process

当我手动初始化它并尝试获取 ID 时,出现此错误:

Caused by: java.lang.IllegalStateException: FirebaseInstanceId.getInstance() must not be null

我尝试设置一个全新的应用程序并且它有效,但实际上不适用于我的项目。 我认为是依赖问题,但是没有错误提示。

我尝试了很多不同的版本,none 似乎有效。

你有解决办法吗?

您必须将配置 JSON 添加到您的应用程序文件夹。 您可以在 firebase 站点上的项目页面上下载此文件。

打开 Firibase 站点 -> Select 你的项目 -> 设置 -> Select 你的应用 -> Clcik "google-services.json"

如果您在初始化 firebase 实例时遇到错误,您可以在尝试获取实例之前使用以下方法。

FirebaseApp.initializeApp(this);

假设您添加了:-

  • google-services.json
  • 在 AndroidManifest.xml
  • 中完成配置

您需要在项目级别 gradle 文件中添加 google-services 依赖项。

buildscript {
   repositories {---}
   dependencies {
       ---
       ---
       classpath 'com.google.gms:google-services:4.0.0'
   }
}

您还需要删除 gcm 依赖项。

实施'com.google.android.gms:play-services-gcm:16.0.0'

问题出在子模块的 AndroidManifest.xml 中 tools:node="replace"。 在我删除它并修复清单合并问题后,它工作正常!

Google 确实应该给我们一个小提示,如果您在项目的任何地方使用 tools:node="replace",Firebase 将不会启动。