307

我们在Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.刚刚添加 Firebase 远程配置的 Android 应用中看到了一些异常消息。

堆栈跟踪如下:

Fatal Exception: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
       at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
       at com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(Unknown Source)
       at com.example.app.fragments.SomeFragment.updateFooter(SourceFile:295)
       at com.example.app.fragments.SomeFragment.onCreateView(SourceFile:205)
       at android.support.v4.app.Fragment.performCreateView(SourceFile:2080)
       at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1108)
       at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1290)
       at android.support.v4.app.BackStackRecord.run(SourceFile:801)
       at android.support.v4.app.FragmentManagerImpl.execSingleAction(SourceFile:1638)
       at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(SourceFile:679)
       at android.support.v4.app.FragmentPagerAdapter.finishUpdate(SourceFile:143)
       at android.support.v4.view.ViewPager.populate(SourceFile:1240)
       at android.support.v4.view.ViewPager.populate(SourceFile:1088)
       at android.support.v4.view.ViewPager.setAdapter(SourceFile:542)
       at com.example.app.SomeActivity.onSomeAsyncCallback(SourceFile:908)
       at com.example.app.SomeDataRetriever.onAsyncHttpCompleted(SourceFile:72)
       at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:141)
       at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:19)
       at android.os.AsyncTask.finish(AsyncTask.java:679)
       at android.os.AsyncTask.access$500(AsyncTask.java:180)
       at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:696)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:150)
       at android.app.ActivityThread.main(ActivityThread.java:5665)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:689)

这是 9.6.1 版本,我们还使用其他 Firebase 组件:

compile 'com.google.firebase:firebase-ads:9.6.1'
compile 'com.google.firebase:firebase-config:9.6.1'
compile 'com.google.firebase:firebase-invites:9.6.1'
compile "com.google.firebase:firebase-messaging:9.6.1"

正如我从文档Javadoc中看到的那样,在我们的案例中,我们不应该进行任何手动初始化。

该异常发生在各种设备上的 Android 4-6 上。

编辑:

我看到这个问题得到了一点关注。我认为这个解释对你们中的一些人来说可能很有趣:https ://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html

4

31 回答 31

429

确保添加到您的根级 build.gradle

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.3.2'
    }
}

然后,在您的模块级 Gradle 文件(通常是 app/build.gradle)中,在文件底部添加“应用插件”行以启用 Gradle 插件:

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  implementation 'com.google.firebase:firebase-core:9.6.1'
  // Getting a "Could not find" error? Make sure you have
  // the latest Google Repository in the Android SDK manager
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

文档中所述。当我忘记在我的 gradle 文件中添加它时,我在上面的问题中遇到了异常。

于 2016-10-17T11:22:35.107 回答
163

前段时间我有同样的问题。

您正在尝试获取 Firebase 的实例而不对其进行初始化。在您尝试获取 Firebase 实例之前,请在您的主函数或 FutureBuilder 中添加这行代码:

FirebaseApp.initializeApp();
于 2017-01-10T13:11:11.603 回答
132

好像google-services:4.1.0有问题。要么将其降级为

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

或升级到

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

dependencies {
    classpath 'com.android.tools.build:gradle:3.3.0-alpha08'
    classpath 'com.google.gms:google-services:4.2.0'
    /*classpath 'com.google.gms:google-services:4.1.0' <-- this was the problem */
}

希望能帮助到你

于 2018-09-02T10:23:35.783 回答
57

我的app/build.gradle文件中缺少以下行

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

并且一旦清理项目并再次运行。那为我修好了。

于 2018-01-09T17:22:55.067 回答
53

更新(2021 年 11 月 11 日):


我们不需要手动调用任何地方。FirebaseApp.initializeApp(this);我们也不应该这样做。

可能性一:

好像com.google.gms:google-services:4.3.9有问题。

我们可以将其升级

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

或将其降级

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

dependencies {
    classpath 'com.android.tools.build:gradle:4.2.2'
    classpath 'com.google.gms:google-services:4.3.9'// <-- this was the problem
}

可能性2:

确保在app/build.gradle文件中添加以下行

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

然后清理项目并再次运行。它对我有用。

可能性3:

我刚刚遇到了同样的问题,并得到了一个意想不到的奇怪解决方案。

这个答案:

我已经删除tools:node="replace",它的工作就像魅力。

于 2019-01-02T09:04:55.320 回答
18
    classpath 'com.google.gms:google-services:4.1.0'

有问题。改为使用:

    classpath 'com.google.gms:google-services:4.2.0'
于 2019-01-25T14:11:20.167 回答
16

首先需要在根级别 build.gradle 添加 com.google.gms:google-services:xxx

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.3.1'
    classpath 'com.google.gms:google-services:3.0.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

}

之后,您需要在 app/build.gradle 应用插件:'com.google.gms.google-services'

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'

compile 'com.google.android.gms:play-services-gcm:9.8.0'
compile 'com.google.android.gms:play-services-maps:9.8.0'
compile 'com.google.android.gms:play-services-location:9.8.0'
compile 'com.google.firebase:firebase-messaging:9.8.0'
testCompile 'junit:junit:4.12'
}


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

如果您仍然遇到问题,那么您需要添加

FirebaseApp.initializeApp(this);

就在你打电话之前

FirebaseInstanceId.getInstance().getToken();
于 2017-04-26T13:46:51.023 回答
15

更新各种依赖项后,我在编译时遇到了 Crashlytics 错误,“Crashlytics 发现了一个无效的 API 密钥:null。检查 Crashlytics 插件以确保应用程序已成功添加!联系 support@fabric.io 寻求帮助。我从多次尝试 support@fabric.io 中得到的一个非自动响应是,Fabric 和 Crashlytics 是独立的团队,所以他们无法帮助我。我已经避免在 Crashlytics 中实现额外的 Fabric 层,并且无法从 Fabric 站点获取新密钥,甚至无法让站点识别我。在尝试通过仅从我的代码中删除 Crashlytics 来解决此问题时,我得到了“默认 FirebaseApp 未在此进程 com.example.app 中初始化”。确保在运行中首先调用 FirebaseApp.initializeApp(Context)。

我从来不需要添加“FirebaseApp.initializeApp(this)”的初始化行,事实上它已经被注释掉了。文档甚至提到如果仅将 Firebase 用于一项活动,则不需要这样做。添加它没有任何区别,仍然出现运行终止错误。

结果是导致新的模糊错误的原因是更新的 google-services 依赖项。目前,我没有时间花更多的时间来修复新依赖导致的霰弹枪错误,所以在有人提出解决方案之前,我会坚持使用旧版本。除了奇怪的初始化崩溃之外,新版本可能会迫使 Crashlytics 用户使用 Fabric。用户也因此被迫回到旧的依赖版本:Crashlytics 发现了一个无效的 API 密钥:null。更新后 com.google.gms:google-services:4.1.0

//com.google.gms:google-services:4.1.0 BAD
com.google.gms:google-services:4.0.1//GOOD

编辑 10/17/18:再次更新以下依赖项后

implementation 'com.google.firebase:firebase-ads:17.0.0'
implementation 'com.google.firebase:firebase-auth:16.0.4'
implementation 'com.google.firebase:firebase-database:16.0.3'
implementation 'com.google.firebase:firebase-core:16.0.4

我在安装尝试时立即崩溃,“xxx 已意外关闭”,就像我尝试 google-services 依赖项更新时一样。挖掘日志,我发现了一个链接,指示我将其添加到清单中

<meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-xxxxxx~xxxxxx"/>

这是新的,此处https://firebase.google.com/docs/android/setup和此处https://developers.google.com/admob/android/interstitial的设置和插页式说明中未提及。

我过去只需要为我的应用处理一个与广告相关的 ID,即 INTERSTITIAL_UNIT_ID。现在需要处理两个。除了上述添加之外,文档还指示在此处添加 ADMOB_APP_ID(与您在新清单代码中与 ads.APPLICATION_ID 绑定的数字相同)

MobileAds.initialize(this, ADMOB_APP_ID);

INTERSTITIAL_UNIT_ID 和 ADMOB_APP_ID id 可以在您的 Google AdMob 控制台中找到。我的游戏应用在我第一次更新 firebase 依赖项时停止投放广告,但仍然不投放广告,在

public void onAdFailedToLoad(int errorCode){...

即使所有这些增加了混乱,我仍然无法在没有初始化错误运行崩溃的情况下更新 google-services 依赖项。我预计会在 google-services:4.0.1 停留一段时间。

编辑 2018 年 10 月 24 日:来自 mobileadssdk-advisor+support@google.com 在更新后没有收到广告服务数周的通信后:

'感谢分享设备日志。从日志来看,这似乎是一个现有问题,这在我们的优先级列表中,我们的团队正在努力修复,这只发生在 Android O 和​​ P 设备上。

只有O和P设备?这是最后两个版本,O 于 2017 年 9 月 25 日发布。哎呀。

21 年 8 月 8 日更新:在将 google-services 从 4.3.8 更新到 4.3.9 后,我突然又从近 3 年前再次遇到这个问题,尽管确实调用了初始化(尽管据称不需要)。将再次不得不延迟更新实施:

//com.google.gms:google-services:4.3.9 BAD
com.google.gms:google-services:4.3.8//GOOD
于 2018-10-04T18:31:58.653 回答
10

正如@PSIXO 在评论中提到的,这可能是 google-services 的依赖版本的问题。对我改变,

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.1.0'
    }
}

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.0.1'
    }
}

工作。4.1.0 版本可能有问题。因为我在这上面浪费了很多时间,所以我想写这个作为答案。

于 2018-10-25T04:19:52.267 回答
7

如果您使用的是FirebaseUI,则无需根据示例FirebaseApp.initializeApp(this);在您的代码中。

确保添加到您的根级build.gradle :

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        ...
        classpath 'com.google.gms:google-services:3.1.1'
        ...
    }
}

然后,在您的模块级Gradle 文件中:

dependencies {

    ...

    // 1 - Required to init Firebase automatically (THE MAGIC LINE)
    implementation "com.google.firebase:firebase-core:11.6.2"

    // 2 - FirebaseUI for Firebase Auth (Or whatever you need...)
    implementation 'com.firebaseui:firebase-ui-auth:3.1.2'
    ...
}

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

而已。不需要更多。

于 2018-01-03T08:50:04.537 回答
6

您需要在build.gradle (项目级)中添加 Firebase Gradle buildscript 依赖项

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

并在app/build.gradle中为 Gradle 添加 Firebase 插件

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

build.gradle will include these new dependencies:
    compile 'com.google.firebase:firebase-database:11.0.4'

来源:Android Studio 助手

于 2017-12-13T00:41:00.760 回答
5

另一种可能的解决方案 - 如果您使用一些测试版,请尝试不同的 Android Studio。对我有帮助。新的 Android Studio 根本没有正确添加 Firebase。在我的情况下 3.3preview

经过更多调查后,我发现问题是新的 Android 工作室使用较新的 Google 服务版本启动项目,看起来这是最初的问题。正如@Ammar Bukhari 所建议的那样,这种变化有助于:

类路径 'com.google.gms:google-services:4.1.0' -> 类路径 'com.google.gms:google-services:4.0.0'

于 2018-09-15T16:16:38.893 回答
4

发生这种情况的原因之一可能是忘记android.permission.INTERNETAndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
于 2017-08-24T21:49:31.760 回答
4

我猜 google-services 和 firebase 版本存在兼容性问题。

我在项目的 build.gradle 文件中更改了依赖项

类路径 'com.google.gms:google-services:4.1.0' 到 4.2.0

然后将模块的 build.gradle 依赖项更新为:

实施 'com.google.firebase:firebase-database:16.0.6'

实施 'com.google.firebase:firebase-core:16.0.7'

一切都像魅力一样,无需输入 FirebaseApp.initializeApp(this);

于 2019-02-05T18:23:15.503 回答
4

就我而言,Google Services gradle 插件没有values.xml从文件中生成所需的google-services.json文件。Firebase 库使用此生成的值文件来初始化自身,如果找不到值文件,它似乎不会引发错误。检查值文件是否存在于以下位置,并使用文件中的适当字符串填充google-sevices.json

app/build/generated/res/google-services/{build_type}/values/values.xml

和/或

app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml

有关更多详细信息,请参阅: https ://developers.google.com/android/guides/google-services-plugin

我的特殊情况是由于使用的 gradle 工具版本对于我正在运行的 Android Studio 版本来说太高级了(即确保您使用 Android Studio v3.2 运行等级工具 v3.2.X-YYY)。

于 2018-09-06T00:12:48.417 回答
3

对我来说,它正在将 build.gradle 中的 com.google.gms:google-services 的依赖项升级到

buildscript {
repositories {
    jcenter()
    mavenCentral()
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.3.2'
    classpath 'com.google.gms:google-services:4.2.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
于 2019-03-10T01:13:39.570 回答
3

如果您最近将您的 Android Studio 更新到 3.3.1,但 com.google.gms:google-services (低于 4.2.0) 依赖项有问题所以请将 com.google.gms:google-services 更新到 4.2.0。

dependencies {
    classpath 'com.android.tools.build:gradle:3.3.1'
    classpath 'com.google.gms:google-services:4.2.0'
    }
于 2019-02-12T11:30:37.783 回答
3

对我来说,问题是我没有在 app/build.gradle 文件中添加这一行。

apply plugin: 'com.google.gms.google-services'
于 2021-11-26T06:47:54.150 回答
3

发生这种情况的原因是com.google.gms:google-services version。当我使用4.1.0时,我遇到了同样的错误。然后我降级版本。前

classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:4.1.0'

classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:3.2.0'

希望,它将解决错误。

于 2019-02-04T17:24:14.993 回答
1

通过遵循@Gabriel Lidenor 的回答,在我的情况下,使用上下文初始化应用程序不起作用。如果您尝试在没有 google-service.json 的情况下创建 firebase-app 怎么办?所以在初始化任意数量的firebase app之前,首先需要初始化为;

FirebaseOptions options = new FirebaseOptions.Builder().setApplicationId("APP_ID")
                    .setGcmSenderId("SENDER_ID").build();
FirebaseApp.initializeApp(context, options, "[DEFAULT]");
于 2019-12-16T13:34:30.923 回答
0

通过 Android Studio 工具安装 Firebase...Firebase...

我通过 Android Studio 的内置工具进行了安装(遵循 Firebase 的最新文档)。这安装了基本依赖项,但是当我尝试连接到数据库时,它总是给我一个错误,我需要首先调用初始化,即使我是:

默认 FirebaseApp 在此过程中未初始化。确保首先调用 FirebaseApp.initializeApp(Context)。

无论我做什么,我都会收到此错误。

最后,在看到其他答案之一的评论后,我将我的 gradle 中的以下内容从 4.1.0 版本更改为:

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

当我这样做时,我终于看到了一个对我有帮助的错误:

文件 google-services.json 丢失。没有它,Google 服务插件将无法运行。搜索位置:C:\Users\%username%\AndroidStudioProjects\TxtFwd\app\src\nullnull\debug\google-services.json
C:\Users\%username%\AndroidStudioProjects\TxtFwd\app\src\debug\nullnull\ google-services.json
C:\Users\%username%\AndroidStudioProjects\TxtFwd\app\src\nullnull\google-services.json
C:\Users\%username%\AndroidStudioProjects\TxtFwd\app\src\debug\google- services.json
C:\Users\%username%\AndroidStudioProjects\TxtFwd\app\src\nullnullDebug\google-services.json
C:\Users\%username%\AndroidStudioProjects\TxtFwd\app\google-services.json

那就是问题所在。似乎 4.1.0 版本由于某种原因没有给出该构建错误 - 没有提到您缺少 google-services.json 文件。我的应用程序中没有 google-services.json 文件,所以我出去添加了它。

但由于这是使用现有实时 firsbase 数据库的升级,因此我过去从未需要生成该文件。我去了firebase并生成它并添加它并解决了问题。

改回 4.1.0

一旦我发现了所有这些,然后我将类路径变量改回(到 4.1.0)并重建,它再次崩溃,错误是它没有被初始化。

根本问题

  • 使用 4.1.0 构建不会在预编译时为您提供有效的错误,因此您可能不知道发生了什么。
  • 针对 4.1.0 运行会导致初始化错误。
于 2019-02-21T15:00:15.460 回答
0

如果您使用 Xamarin 并来到这里寻找解决此问题的方法,这里来自 Microsoft

在某些情况下,您可能会看到以下错误消息:Java.Lang.IllegalStateException: Default FirebaseApp is not initialized in this process 请确保首先调用 FirebaseApp.initializeApp(Context)。

这是一个已知问题,您可以通过清理解决方案并重建项目(构建 > 清洁解决方案、构建 > 重建解决方案)来解决。

于 2020-12-03T12:17:38.523 回答
0

使用 com.google.gms:google-services:4.0.1' 而不是 4.1.0

于 2019-04-19T20:22:39.733 回答
0

在我的情况下,当我升级我的 Google gms 类路径时发生了这个错误。是

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

所以我必须降级为:

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

它工作得很好。

于 2021-08-11T14:44:45.827 回答
0

虽然手动初始化 FirebaseFirebaseApp.initializeApp(this);使错误消失,但并不能解决根本原因,一些奇怪的问题似乎并没有解决,例如

  • FCM 需要com.google.android.c2dm.permission.RECEIVE仅适用于 GCM 的许可
  • 发送第一个通知后令牌未注册
  • 未收到消息/ onMessageReceived() 永远不会被调用,

使用较新的 Gradle 插件(例如 Android 插件 2.2.3 和 Gradle 2.14.1)修复了所有问题。(当然,根据Firebase 文档,设置必须正确)

于 2017-08-16T04:34:30.023 回答
0

单击工具 > Firebase 以打开助手窗口。

单击以展开列出的功能之一(例如,分析),然后单击提供的教程链接(例如,记录分析事件)。

单击连接到 Firebase 按钮​​以连接到 Firebase 并将必要的代码添加到您的应用程序。

https://firebase.google.com/docs/android/setup

于 2018-09-24T15:19:14.043 回答
0

改变

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

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

为我工作

于 2019-06-06T13:02:16.810 回答
0

这个过程没有解决我的问题

FirebaseApp.initializeApp(this); 

所以我尝试了其他方法,现在我的 firebase 已成功初始化。尝试在 app module.gradle 中添加以下内容

BuildScript{
dependencies {..
classpath : "com.google.firebase:firebase-plugins:1.1.5"
    ..}
}

dependencies {...
implementation : "com.google.firebase:firebase-perf:16.1.0"
implementation : "com.google.firebase:firebase-core:16.0.3"
..}
于 2018-08-29T20:28:06.060 回答
0

我将项目 gms:google_services 降级为类路径 'com.google.gms:google-services:4.0.1' 它对我有用。

于 2021-02-09T05:21:43.950 回答
0

In my case I was deactivating the service in the build gradle (app) as follows:

android.applicationVariants.all { variant ->
    def googleTask = tasks.findByName("process${variant.name.capitalize()}GoogleServices")
    googleTask.enabled = "mock" != variant.flavorName
}

As this variant was only used for testing and mocking services it was deactivated. This didn't cause any issues for me for nearly 2 years. Once I noticed it within the gradle file it was a bit of a facepalm moment...

If you also do this, simply delete it.

于 2021-11-08T09:47:07.480 回答
-1

我们将不得不在应用程序类的 onCreate 函数中初始化 Firebase。

 package com.rocks.music.videoplayer;

 import android.app.Application;
 import android.content.Context;

 import com.google.firebase.FirebaseApp;


/**
* Created by ashish123 on 22/8/15.
  */
 public class MyApplication extends Application {

private static MyApplication mInstance;

@Override
public void onCreate() {
    super.onCreate();
    mInstance = this;
    try {
        FirebaseApp.initializeApp(this);
    }
    catch (Exception e) {
    }
}

public static Context getInstance() {
    return mInstance;
}

}

清单文件中的代码:-

  <application
    android:name="com.rocks.music.videoplayer.MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/app_icon"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
于 2017-08-17T12:36:07.607 回答