我们在刚刚添加了Firebase远程配置的Android应用中看到了Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
消息的一些例外情况。
堆栈跟踪如下:
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"
我可以看到from the documentation和the Javadoc我们不应该在我们的案例中进行任何手动初始化。
在各种设备的Android 4-6上发生异常。
修改
我看到这个问题引起了一些关注。我认为这个解释对你们中的一些人来说很有意思:https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html
答案 0 :(得分:265)
确保添加到根级build.gradle
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
然后,在您的模块级Gradle文件(通常是app / build.gradle)中,添加' apply插件'在文件底部的行以启用Gradle插件:
apply plugin: 'com.android.application'
android {
// ...
}
dependencies {
// ...
compile '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'
如documentation所述。忘记在我的gradle文件中添加此内容时,我在上面的问题中有异常。
答案 1 :(得分:115)
似乎select group_concat(distinct str_ separator ' ') as str
from
(
select str_ from (
select
q.n,
substring_index(substring_index(str, ' ', n), ' ', -1 ) as str_
from tab
inner join ( select ordinal_position as n
from INFORMATION_SCHEMA.COLUMNS t
where table_name='COLUMNS' ) q
on char_length(str) >= n - 1
) q1
order by str_
) q2;
str
-------------
Hanoi Sapa to
有问题。要么降级到
google-services:4.1.0
或将其升级到
classpath 'com.google.gms:google-services:4.0.0'
classpath 'com.google.gms:google-services:4.2.0'
希望有帮助
答案 2 :(得分:111)
我前段时间遇到同样的问题。
您尝试在不初始化的情况下获取Firebase的实例。 在尝试获取Firebase实例之前,请添加以下代码行:
FirebaseApp.initializeApp(this);
答案 3 :(得分:44)
我在 app / build.gradle 文件
中缺少以下行apply plugin: 'com.google.gms.google-services'
并且一旦清理项目并再次运行。这为我解决了。
答案 4 :(得分:16)
classpath 'com.google.gms:google-services:4.1.0'
有问题。而是使用:
classpath 'com.google.gms:google-services:4.2.0'
答案 5 :(得分:12)
首先需要在root级别build.gradle添加com.google.gms:google-services:x.x.x
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
}
}
之后,您需要应用插件:' com.google.gms.google-services'在app / build.gradle
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();
答案 6 :(得分:11)
更新各种依赖关系后,我在编译时遇到了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依赖关系。现在,我没有时间花更多的时间来解决新依赖项引起的shot弹枪错误,因此在有人提出解决方案之前,我将坚持使用旧版本。除了奇怪的初始化崩溃外,新版本还可能迫使Fabric应用于Crashlytics用户。用户也为此被迫回到旧的依赖版本:Crashlytics found an invalid API key: null. after updated 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);
可以在您的Google AdMob控制台中找到INTERSTITIAL_UNIT_ID和ADMOB_APP_ID ID。我的游戏应用在首次更新Firebase依赖项时停止投放广告,但仍然不投放广告,在
中给出错误代码0public 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日发布。
答案 7 :(得分:8)
正如@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版本可能存在问题。因为我在此上浪费了很多时间,所以我想将此作为答案。
答案 8 :(得分:7)
如果您在FirebaseUI的代码中使用the sample,不需要 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'
就是这样。不需要更多。
答案 9 :(得分:5)
另一种可能的解决方案-如果您使用的是某些Beta,请尝试使用其他Android Studio。对我有帮助。新的Android Studio根本没有正确添加Firebase。就我而言3.3预览
经过更多调查后,我发现问题是新的Android Studio使用较新的Google服务版本启动了项目,而这似乎是原始问题。正如@Ammar Bukhari所建议的,此更改有所帮助:
classpath'com.google.gms:google-services:4.1.0'-> classpath'com.google.gms:google-services:4.0.0'
答案 10 :(得分: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);
答案 11 :(得分:3)
您需要在 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助理
答案 12 :(得分:3)
就我而言,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)。
答案 13 :(得分: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'
}
答案 14 :(得分:2)
我们确实无需在任何地方手动致电FirebaseApp.initializeApp(this);
。而且我们也不应该。
我只是面临着同样的问题,并且得到了意想不到的奇怪解决方案。
我删除了tools:node="replace"
,它的工作原理很吸引人。
答案 15 :(得分:2)
发生这种情况的原因是 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'
希望,它将解决错误。
答案 16 :(得分:2)
对我来说,它是将build.gradle中的com.google.gms:google-services依赖项升级到
@PersistenceContext
private EntityManager entityManager =
EntityManagerFactory.createEntityManager();
答案 17 :(得分:0)
就我而言,当我升级 Google gms 类路径时发生此错误。 上午
classpath 'com.google.gms:google-services:4.3.9'
所以我必须降级到:
classpath 'com.google.gms:google-services:4.3.8'
而且效果很好。
答案 18 :(得分:0)
我将项目 gms:google_services 降级为 类路径 'com.google.gms:google-services:4.0.1' 它对我有用。
答案 19 :(得分:0)
如果您使用Xamarin并来到这里寻找该问题的解决方案,here it's from Microsoft:
在某些情况下,您可能会看到以下错误消息: Java.Lang.IllegalStateException:默认FirebaseApp不是 在此过程中初始化请确保调用 首先是FirebaseApp.initializeApp(Context)。
这是一个已知问题,您可以通过清洁 解决方案并重建项目(“构建”>“清洁解决方案”,“构建”>“ 重建解决方案)。
答案 20 :(得分:0)
按照@Gabriel Lidenor的回答,在我的情况下无法使用上下文初始化应用程序。如果您尝试在没有google-service.json的情况下创建firebase-app怎么办?因此,在初始化任意数量的firebase应用之前,首先需要将初始化为;
FirebaseOptions options = new FirebaseOptions.Builder().setApplicationId("APP_ID")
.setGcmSenderId("SENDER_ID").build();
FirebaseApp.initializeApp(context, options, "[DEFAULT]");
答案 21 :(得分:0)
更改
classpath 'com.google.gms:google-services:4.1.0'
到
classpath 'com.google.gms:google-services:4.0.1'
为我工作
答案 22 :(得分:0)
使用com.google.gms:google-services:4.0.1'代替4.1.0
答案 23 :(得分: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
一旦发现了所有这些内容,便将classpath变量改回(至4.1.0)并重新构建,并再次崩溃,并出现尚未初始化的错误。
根本问题
答案 24 :(得分:0)
尽管使用FirebaseApp.initializeApp(this);
手动初始化Firebase会使错误消失,但它无法解决根本原因,一些奇怪的问题似乎无法解决,例如
com.google.android.c2dm.permission.RECEIVE
权限
仅适用于GCM 使用较新的Gradle插件(例如Android插件2.2.3和Gradle 2.14.1)修复了所有内容。 (当然,根据Firebase documentation)
,设置必须正确答案 25 :(得分:0)
我们必须在Application Class的onCreate函数中初始化Firebase。
main
}
清单文件中的代码: -
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;
}
答案 26 :(得分:0)
发生这种情况的原因之一可能是忘记在android.permission.INTERNET
AndroidManifest.xml
权限
<uses-permission android:name="android.permission.INTERNET" />
答案 27 :(得分:0)
点击工具> Firebase以打开“助手”窗口。
单击以展开列出的功能之一(例如,Analytics(分析)),然后单击提供的教程链接(例如,记录Analytics(分析)事件)。
点击“连接到Firebase”按钮以连接到Firebase并将必要的代码添加到您的应用中。
答案 28 :(得分: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"
..}
答案 29 :(得分:-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'
您只需要更新它们
这是更新方式