默认FirebaseApp未初始化


235

我们Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.在Android应用程序中看到了一些例外消息,其中刚刚添加了Firebase Remote Config。

堆栈跟踪如下:

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


1
尝试在SO中搜索“未初始化默认FirebaseApp”。有很多不同的情况可能导致此。
道格·史蒂文森

是的,我有。找不到匹配的情况,所以这就是我要问的原因。可能已经提到,在问
罗伊·索伯格

您是否能够提供一个最小的示例来重现此问题,并显示清单,build.gradle和Activity?
道格·史蒂文森

您是在ContentProvider还是Application类中初始化Firebase?
安德鲁·凯利

2
对于一小部分玩家,我也遇到相同的问题。使用最新的10.0.1
德米特里(Dmitry),

Answers:


136

我前段时间也遇到过同样的问题。

您正在尝试获取Firebase实例而不对其进行初始化。在尝试获取Firebase实例之前,请添加以下代码行:

FirebaseApp.initializeApp(this);

3
@Henrik仅在ExtendedApplication.onCreate()中。
罗伊·索尔伯格

5
好吧,这对我不起作用(仍然在生产中崩溃了)。我将尝试将初始化代码添加到我的第一个Activity onCreate()中。
塞巴斯蒂安

77
重要的是要注意,apply plugin: 'com.google.gms.google-services'
除此

2
我必须在哪个文件中添加此MainActivity.java?
abhit

23
对我来说com.google.gms:google-services:4.1.0版本崩溃了,但com.google.gms:google-services:4.0.1起作用了
IgorČordaš18年

345

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

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

然后,在模块级别的Gradle文件(通常为app / build.gradle)中,在文件底部添加“ apply plugin”行以启用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文件中时,我遇到了上述问题中的异常。


2
检查,然后检查。刚刚验证了我们描述的Gradle文件。我应该提到的是,该代码对于许多用户来说都可以正常工作。
罗伊·索尔伯格

可能是您混合使用了库版本。当我尝试使用编译时,我遇到了相同的问题,'com.google.firebase:firebase-core:9.8.0' 因此我更改compile 'com.google.firebase:firebase-core:9.6.0'为与其他库匹配。原始答案 您正在混合Firebase SDK版本。如所解释的
crakama

3
“应用插件:“ com.google.gms.google-services”对我有用。
Rockyfish

7
对我的情况没有帮助。而且问题只影响极少数的玩家。因此,很可能不是代码或设置的问题,而是与用户设备中安装的播放服务的互操作性:-(
Dmitry

2
谢谢:)我忘了添加此行的build.gradle:应用插件:“com.google.gms.google服务”
RICHI

126

似乎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 */
}

希望能帮助到你


9
它也对我有用。似乎4.1.0存在一些问题
iuq '18

我也刚刚发现了这个问题,并且还发现Android Studio 3.2中已经有针对Android SDK Build-Tools(工具-> SDK Manager-> SDK Tools)的更新,应用此更新让我classpath 'com.google.gms:google-services:4.1.0'再次使用。YMMV。
IainCunningham

2
天哪,从字面上看,花了2个多星期才能使它正常工作,我所要做的就是将其从4.1.0降级到4.0.0。谢谢吨
奥利弗史宾

4
问题跟踪器一起将在4.2.0中修复
kuelye

我只是将com.google.gms:google-services:4.1.0降级为om.google.gms:google-services:4.0.0,它可以正常工作。它挽救了我的一天。
尼尔,

51

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

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

然后清理项目并再次运行。这为我解决了。


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

有问题。改为使用:

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

15

首先,您需要在root级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();

12

更新各种依赖关系后,我在编译时遇到了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依赖关系。现在,我没有时间花更多的时间来解决新依赖引起的散弹枪错误,因此在有人提出解决方案之前,我将坚持使用旧版本。除了奇怪的初始化崩溃外,新版本还可能迫使Fabric应用于Crashlytics用户。用户也为此被迫回到旧的依赖版本: 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/setuphttps://developers.google.com/admob/android/interstitial

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

MobileAds.initialize(this, ADMOB_APP_ID);

可以在您的Google AdMob控制台中挖出INTERSTITIAL_UNIT_ID和ADMOB_APP_ID ID。我的游戏应用在首次更新Firebase依赖项时停止投放广告,但仍不投放广告,在错误代码为0的情况下

public void onAdFailedToLoad(int errorCode){...

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

编辑10/24/18:经过数周的通信后,从mobileadssdk-advisor+support@google.com更新后没有获得广告投放:

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

仅O和P设备?那是最后两个版本,O于2017年9月25日发布。


3
我也经历过这一点。希望Google每次发布更新时都不会破坏我的应用程序构建。
Patty P

嗨,我通过添加apply plugin: 'com.google.gms.google-services'build.gradle(使用google-services:4.1.0)使它正常工作
Nicolas Mauti

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版本可能存在问题。因为我在此上浪费了很多时间,所以我想将此作为答案。


1
是的,对我来说,它通过将构建版本更改为4.0.1起作用。这可能是一些依赖问题
Abraham Mathew

4
将所有版本更新为最新版本(4.2.0)后,这对我来说解决了这个问题
david72,18年

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'

而已。不用了


5

您需要在build.gradle中添加Firebase Gradle构建脚本依赖项(项目级别)

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 Assistant


5

另一种可能的解决方案-如果使用的是Beta,请尝试使用其他Android Studio。对我有帮助。新的Android Studio根本没有正确添加Firebase。就我而言3.3预览

经过更多调查后,我发现问题是新的Android Studio使用较新的Google Services版本启动了项目,这似乎是原始问题。正如@Ammar Bukhari所建议的那样,此更改有所帮助:

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


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)。


4

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

我只是遇到了同样的问题,并且得到了意想不到的奇怪解决方案。

这个答案:

我已删除tools:node="replace",它的运行就像魅力一样。


4

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

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

classpath'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);


在将“ com.google.firebase:firebase-core:16.0.8”降级到“ com.google.firebase:firebase-core:16.0.7”后,我解决了我的问题,谢谢
Nanda Z

3

发生这种情况的原因是com.google.gms:google-services版本。当我使用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'

希望能解决错误。


3

如果您最近将com.google.gms:google-services(低于4.2.0)依赖项存在问题,将Android Studio更新到3.3.1,则请将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'
    }

3

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

<uses-permission android:name="android.permission.INTERNET" />

2

对我而言,它是将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
}

0

尽管使用手动初始化Firebase可以FirebaseApp.initializeApp(this);使错误消失,但是它不能解决根本原因,但似乎无法解决一些奇怪的问题,例如

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

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


哇,这是一些有趣的信息。由于问题很少发生,因此很难说我们是否已经看到过其中任何一个。也许我们应该尝试再次删除它,并使用较新的Gradle版本。
罗伊·索尔伯格

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"
..}

0

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

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

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

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


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 Services插件将无法运行。搜索的位置: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

一旦发现了所有这些内容,便将classpath变量改回(至4.1.0)并重新构建,并再次崩溃,并出现尚未初始化的错误。

根本问题

  • 使用4.1.0编译时,在预编译时不会为您提供有效的错误,因此您可能不知道发生了什么。
  • 针对4.1.0运行会导致初始化错误。


0

改变

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

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

为我工作


使用以下最新版本可以帮助我解决问题。无需降级:)类路径'com.android.tools.build:gradle:3.4.2'类路径'com.google.gms:google-services:4.3.0'–
石榴石

0

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

FirebaseOptions options = new FirebaseOptions.Builder().setApplicationId("APP_ID")
                    .setGcmSenderId("SENDER_ID").build();
FirebaseApp.initializeApp(context, options, "[DEFAULT]");

-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">

-1

原因和解决方法:这是您大多数时候会遇到的常见错误。原因:当您将项目与Firebase集成时,它会添加依赖项

implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.google.android.gms:play-services-auth:16.0.1'

和类路径

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

您只需要更新它们

这是您可以更新的方式

去gradle sript做这个

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.