По умолчанию FirebaseApp не инициализирован

Мы видим несколько исключений с сообщением 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 на различных устройствах.

Edit:

Я вижу, что этот вопрос получает немного внимания. Я думаю, что это объяснение может быть интересно для некоторых из вас: https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html

Ответ 1

У меня была эта же проблема некоторое время назад.

Вы пытаетесь получить экземпляр Firebase без его инициализации. Пожалуйста, добавьте эту строку кода, прежде чем пытаться получить экземпляр Firebase:

FirebaseApp.initializeApp(this);

Ответ 2

Обязательно добавьте в свой корневой уровень build.gradle

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

Затем на вашем уровне модуля Gradle (обычно это приложение /build.gradle) добавьте строку "применить плагин" в нижней части файла, чтобы включить плагин 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'

Как сказано в документации. У меня было исключение, как в вопросе выше, когда забыл добавить это в мои файлы Gradle.

Ответ 3

Похоже, у 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 */
}

Надеюсь, поможет

Ответ 4

Мне не хватало следующую строку в файле app/build.gradle

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

и как только чистый проект и снова запустите. Это исправило это для меня.

Ответ 5

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

есть проблема. вместо этого используйте:

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

Ответ 6

Прежде всего вам нужно добавить com.google.gms: google-services: x.x.x на уровне root build.gradle

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" в приложении /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();

Ответ 7

После обновления различных зависимостей я получил ошибку Crashlytics во время компиляции: "Crashlytics обнаружил недопустимый ключ API: null. Проверьте плагин Crashlytics, чтобы убедиться, что приложение было успешно добавлено! Свяжитесь с [email protected] для получения помощи. ' Единственный неавтоматический ответ, который я получил от неоднократных попыток [email protected], на которые вас направляет ошибка, заключался в том, что Fabric и Crashlytics - это отдельные команды, поэтому они не могли мне помочь. Я избегал внедрения дополнительного слоя Fabric в Crashlytics и не смог получить новый ключ с сайта 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

РЕДАКТИРОВАТЬ 17/10/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.

Раньше мне приходилось иметь дело только с одним идентификатором, связанным с рекламой, для моего приложения, INTERSTITIAL_UNIT_ID. Теперь нужно разобраться с двумя. Помимо вышеприведенного добавления, документация предписывает добавить здесь ADMOB_APP_ID (тот же номер, который вы связываете с ads.APPLICATION_ID в новом коде манифеста)

MobileAds.initialize(this, ADMOB_APP_ID);

Идентификаторы INTERSTITIAL_UNIT_ID и ADMOB_APP_ID можно найти в консоли Google AdMob. Мое игровое приложение перестало показывать рекламу при моем первом обновлении зависимостей Firebase и до сих пор не показывает рекламу, выдав код ошибки 0 в

public void onAdFailedToLoad(int errorCode){...

Даже после всего этого добавленного беспорядка я все еще не могу обновить зависимость google-services без сбоя запуска инициализированной ошибки. Я ожидаю, что застряну в google-services: 4.0.1 на некоторое время.

РЕДАКТИРОВАТЬ 24/24/18: из [email protected] после нескольких недель переписки о том, что реклама не показывается после обновлений:

"Спасибо за обмен журналами устройства. Из журналов это выглядит как существующая проблема, и она находится в нашем списке приоритетов, и наша команда работает над исправлением, и это происходит только на устройствах Android O и P ".

Только устройства O и P? Именно последние две версии O вышли 25 сентября 2017 года.

Ответ 8

Как уже упоминалось в комментарии @PSIXO, это может быть проблема с версией google-сервисов зависимостей. Для меня изменение,

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. Поскольку я потратил много времени на это, я решил написать это как ответ.

Ответ 9

Если вы используете FirebaseUI, нет необходимости в FirebaseApp.initializeApp(this); в вашем коде согласно образцу.

Не забудьте добавить к корневому уровню build.gradle:

buildscript {

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

Затем на вашем уровне модуля Gradle file:

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'

Это. Больше не нужно.

Ответ 10

Другое возможное решение - попробуйте использовать другую Android-студию, если вы используете некоторые бета-версии. Помог мне. Новая Android-студия просто не добавила Firebase должным образом. В моем случае 3.3preview

После еще нескольких исследований я обнаружил, что проблема заключается в том, что новая студия Android начинает проект с новой версией Google Services, и похоже, что это была оригинальная проблема. Как сказал @Ammar Bukhari, это изменение помогло:

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

Ответ 11

Я предполагаю, что есть проблемы совместимости с версией google-сервисов и версий firebase.

Я изменил в файле Project build.gradle, зависимость

classpath 'com.google.gms: google-services: 4.1.0' до 4.2.0

а затем обновил зависимости модуля build.gradle:

реализация 'com.google.firebase: база данных firebase: 16.0.6'

реализация "com.google.firebase: firebase-core: 16.0.7"

Все работает как шарм, нет необходимости вводить FirebaseApp.initializeApp (это);

Ответ 12

Вам нужно добавить зависимость Firebase Gradle buildscript в build.gradle(уровень проекта)

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

и добавьте плагин Firebase для Gradle в app/build.gradle

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

Ответ 13

В моем случае плагин Google для плагинов не генерировал требуемый файл 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, которую я запускал (т.е. убедитесь, что вы запускаете инструменты класса v3.2.X-YYY с Android Studio v3.2).

Ответ 14

Если вы недавно обновили 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'
    }

Ответ 15

Нам не нужно вызывать FirebaseApp.initializeApp(this); где угодно вручную. и мы не должны тоже.

Я просто столкнулся с той же проблемой и получил неожиданное и странное решение.

Из этого ответа:

Я удалил tools:node="replace" и он работает как шарм.

Ответ 16

Причиной этого является 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'

Надеюсь, это решит ошибку.

Ответ 17

для меня это было обновление зависимостей com.google.gms: google-services внутри build.gradle до

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
}

Ответ 18

Хотя вручную инициализировать Firebase с помощью FirebaseApp.initializeApp(this);, ошибка исчезает, она не устраняет основную причину, некоторые нечетные проблемы собираются вместе, кажется, не решены, например

  • FCM требует разрешения com.google.android.c2dm.permission.RECEIVE, которое только для GCM
  • токен становится незарегистрированным после отправки первого уведомления
  • сообщение не получено /onMessageReceived () никогда не вызывается,

Использовать новый плагин Gradle (например, Android-плагин 2.2.3 и Gradle 2.14.1) исправил все. (Конечно, настройка должна быть правильной согласно Документация Firebase)

Ответ 19

Нам нужно будет инициализировать Firebase в функции onCreate класса Application.

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

Ответ 20

Одной из причин этого может быть забвение добавления разрешений android.permission.INTERNET в AndroidManifest.xml

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

Ответ 21

Моя проблема не была решена с помощью этой процедуры

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

Ответ 22

Нажмите "Сервис"> "Firebase", чтобы открыть окно "Помощник".

Нажмите, чтобы развернуть одну из перечисленных функций (например, Google Analytics), затем нажмите на предоставленную ссылку на учебное пособие (например, Log an Analytics event).

Нажмите кнопку "Подключиться к Firebase", чтобы подключиться к Firebase и добавить в свой код необходимый код.

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

Ответ 23

Установленная Firebase через Android Studio Tools... 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\%имя пользователя%\AndroidStudioProjects\TxtFwd\приложение\SRC\Debug\nullnull\Google-services.json
C:\Users\%имя пользователя%\AndroidStudioProjects\TxtFwd\приложение\SRC\nullnull\Google-services.json
C:\Users\%имя пользователя%\AndroidStudioProjects\TxtFwd\приложение\SRC\Debug\Google-services.json
C:\Users\%имя пользователя%\AndroidStudioProjects\TxtFwd\приложение\SRC\nullnullDebug\Google-services.json
C:\Users\%имя пользователя%\AndroidStudioProjects\TxtFwd\приложение\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 вызывает ошибку инициализации.

Ответ 24

используйте com.google.gms: google-services: 4.0.1 'вместо 4.1.0

Ответ 25

изменения

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

в

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

Работает для меня

Ответ 26

Причина и решение: это распространенная ошибка, которую вы получите в большинстве случаев. Причина: когда вы интегрируете свой проект с Firebase, он добавляет зависимости

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

и classpath

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

вам просто нужно обновить их

Вот как вы можете обновить

иди в Gradle Sript и сделай это

Ответ 27

обновить версию

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