Widzimy kilka wyjątków od komunikatu Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
w naszej aplikacji na Androida, w której właśnie dodaliśmy Firebase Remote Config.
Ślad stosu wygląda następująco:
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)
To jest wersja 9.6.1 i używamy również innych składników 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"
Jak widzę z dokumentacji i Javadoc, nie powinniśmy wykonywać ręcznej inicjalizacji w naszym przypadku.
Wyjątek występuje na Androidzie 4-6 na różnych urządzeniach.
Edytować:
Widzę, że to pytanie zyskuje trochę uwagi. Myślę, że to wyjaśnienie może być interesujące dla niektórych z was: https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html
android
firebase-remote-config
Roy Solberg
źródło
źródło
Odpowiedzi:
Miałem ten sam problem jakiś czas temu.
Próbujesz uzyskać instancję Firebase bez jej inicjalizacji. Dodaj ten wiersz kodu, zanim spróbujesz uzyskać instancję Firebase:
źródło
apply plugin: 'com.google.gms.google-services'
Pamiętaj, aby dodać do pliku build.gradle na poziomie root
Następnie w pliku Gradle na poziomie modułu (zwykle app / build.gradle) dodaj wiersz „Zastosuj wtyczkę” u dołu pliku, aby włączyć wtyczkę Gradle:
Jak powiedziano w dokumentacji . Miałem wyjątek, jak w powyższym pytaniu, kiedy zapomniałem dodać to do moich plików ocen.
źródło
'com.google.firebase:firebase-core:9.8.0'
więc zmieniłem,compile 'com.google.firebase:firebase-core:9.6.0'
aby dopasować do innych bibliotek. Oryginalna odpowiedź Mieszasz wersje Firebase SDK. jak wyjaśnionoWygląda na to, że
google-services:4.1.0
ma problem. Zmień ją na niższąlub uaktualnij do
Mam nadzieję, że to pomoże
źródło
classpath 'com.google.gms:google-services:4.1.0'
ponownie. YMMV.Brakowało mi poniższej linii w moim pliku app / build.gradle
a raz wyczyść projekt i uruchom ponownie. To naprawiło to dla mnie.
źródło
ma problem. zamiast tego użyj:
źródło
Najpierw musisz dodać com.google.gms: google-services: xxx na poziomie głównym build.gradle
}
Następnie musisz zastosować wtyczkę: „com.google.gms.google-services” w aplikacji / build.gradle
a jeśli nadal masz problem, musisz dodać
tuż przed dzwonieniem
źródło
Po zaktualizowaniu różnych zależności w kompilacji wystąpił błąd Crashlytics: „Crashlytics znalazł niepoprawny klucz API: null. Sprawdź wtyczkę Crashlytics, aby upewnić się, że aplikacja została pomyślnie dodana! Skontaktuj się z [email protected] w celu uzyskania pomocy. ” Jedyną nieautomatyczną odpowiedzią, którą otrzymałem po wielokrotnych próbach wsparcia na adres [email protected], do którego ten błąd kieruje cię, było to, że Fabric i Crashlytics to osobne zespoły, więc nie mogły mi pomóc. Unikałem implementowania dodatkowej warstwy Fabric do Crashlytics i nie byłem w stanie uzyskać nowego klucza z witryny Fabric, ani nawet przekonać mnie, że strona mnie rozpoznaje. Próbując obejść ten problem, po prostu usuwając Crashlytics z mojego kodu, otrzymałem „Domyślna FirebaseApp nie jest inicjowana w tym procesie com.example.app. Pamiętaj, aby najpierw wywołać awarię FirebaseApp.initializeApp (kontekst).
Nigdy nie musiałem dodawać wiersza inicjującego „FirebaseApp.initializeApp (this)”, a tak naprawdę to skomentowałem. Dokumentacja wspomina nawet, że nie jest to konieczne, jeśli używa się Firebase tylko do jednego działania. Dodanie go nie miało znaczenia, nadal wystąpił błąd zabijania podczas uruchamiania.
Okazuje się, że przyczyną nowych niejasnych błędów była zaktualizowana zależność usług Google. Na razie nie mam czasu spędzać więcej dni, próbując naprawić błędy strzelby, które powoduje nowa zależność, więc dopóki ktoś nie wymyśli rozwiązań, pozostanę przy starej wersji. Oprócz dziwnej awarii inicjalizacji nowa wersja może wymuszać Fabric na użytkownikach Crashlytics. Użytkownicy są również zmuszani do powrotu do starej wersji zależności: Crashlytics znalazł niepoprawny klucz API: null. po zaktualizowaniu com.google.gms: google-services: 4.1.0
EDYCJA 10/17/18: Po ponownej aktualizacji następujących zależności
Natychmiast dostałem awarię przy próbie instalacji z „xxx niespodziewanie się zamknął”, na przykład kiedy próbowałem zaktualizować zależność usług Google. Wkopując się w dziennik, znalazłem link, który polecił mi dodać to do manifestu
Jest to nowe i nie jest wymienione w instrukcjach konfiguracji i reklamach pełnoekranowych tutaj https://firebase.google.com/docs/android/setup i tutaj https://developers.google.com/admob/android/interstitial .
Kiedyś miałem do czynienia tylko z jednym identyfikatorem związanym z reklamami w mojej aplikacji, INTERSTITIAL_UNIT_ID. Teraz należy zająć się dwoma. Oprócz powyższego dodatku dokumentacja zaleca dodanie tutaj ADMOB_APP_ID (ten sam numer, który wiążesz z ads.APPLICATION_ID w nowym kodzie manifestu)
Identyfikatory INTERSTITIAL_UNIT_ID i ADMOB_APP_ID można wykopać w konsoli Google AdMob. Moja aplikacja do gier przestała wyświetlać reklamy przy mojej pierwszej aktualizacji zależności firebase i nadal nie wyświetla reklam, dając kod błędu 0 w
Nawet po tym całym dodanym bałaganie nadal nie mogę zaktualizować zależności usług Google bez awarii inicjalizacji błędu uruchamiania. Oczekuję, że przez pewien czas utknę w usługach Google: 4.0.1.
EDYCJA 10/24/18: Od [email protected] po tygodniach korespondencji na temat nie otrzymywania reklam po aktualizacjach:
„Dziękujemy za udostępnienie dzienników urządzenia. Z dzienników wygląda to na istniejący problem, który znajduje się na naszej liście priorytetów, a nasz zespół pracuje nad poprawką, a dzieje się tak tylko na urządzeniach z Androidem O i P. ”
Tylko urządzenia O i P? To dwie ostatnie wersje, O wyszedł 25 września 2017 r. Yikes.
źródło
apply plugin: 'com.google.gms.google-services'
działam, dodając w build.gradle (z usługami Google: 4.1.0)Jak wspomniano w komentarzu @PSIXO, może to być problem z wersją zależności usług Google. Zmieniam się,
do
działało. Może występować problem z wersją 4.1.0. Ponieważ zmarnowałem na to wiele godzin, postanowiłem napisać to jako odpowiedź.
źródło
Jeśli używasz FirebaseUI , nie trzeba od
FirebaseApp.initializeApp(this);
w kodzie zgodnie próbkę .Upewnij się, aby dodać do głównego poziomu build.gradle:
Następnie w pliku Gradle na poziomie modułu :
Otóż to. Nie potrzebujesz więcej.
źródło
Musisz dodać zależność buildscript Firebase Gradle w build.gradle (na poziomie projektu)
i dodaj wtyczkę Firebase do Gradle w app / build.gradle
Źródło: Android Studio Assistant
źródło
Inne możliwe rozwiązanie - wypróbuj inny Android Studio, jeśli korzystasz z niektórych bet. Pomógł mi. Nowe Android Studio po prostu nie dodało poprawnie Firebase. W moim przypadku 3.3 podgląd
Po kilku dalszych badaniach odkryłem, że problem polega na tym, że nowe studio Android uruchamia projekt z nowszą wersją usług Google i wygląda na to, że był to pierwotny problem. Jak @Ammar Bukhari zasugerował, ta zmiana pomogła:
classpath „com.google.gms: google-services: 4.1.0” -> classpath ”com.google.gms: google-services: 4.0.0”
źródło
W moim przypadku wtyczka stopniowania usług Google nie generowała wymaganego
values.xml
pliku zgoogle-services.json
pliku. Biblioteka Firebase używa tego wygenerowanego pliku wartości do zainicjowania się i wydaje się, że nie zgłasza błędu, jeśli nie można znaleźć pliku wartości. Sprawdź, czy plik wartości istnieje w następującej lokalizacji i czy zawiera odpowiednie ciągi zgoogle-sevices.json
pliku:i / lub
Aby uzyskać więcej informacji, zobacz: https://developers.google.com/android/guides/google-services-plugin
Mój szczególny przypadek był spowodowany użyciem wersji narzędzi gradle, która była zbyt zaawansowana dla wersji Androida Studio, którą uruchomiłem (tj. Upewnij się, że korzystasz z grad grad tools v3.2.X-YYY z Android Studio v3.2).
źródło
Nie musimy dzwonić
FirebaseApp.initializeApp(this);
nigdzie ręcznie. i my też nie powinniśmy.Właśnie spotkałem się z tym samym problemem i otrzymałem nieoczekiwane i dziwne rozwiązanie.
Z tej odpowiedzi:
Usunąłem
tools:node="replace"
i działa jak urok.źródło
Zgaduję, że występują problemy ze zgodnością z wersją usług Google i wersjami firebase.
Zmieniłem w pliku build.gradle projektu, zależność
classpath „com.google.gms: google-services: 4.1.0” do 4.2.0
a następnie zaktualizowałem zależności build.gradle modułu do:
wdrożenie „com.google.firebase: firebase-database: 16.0.6”
wdrożenie „com.google.firebase: firebase-core: 16.0.7”
Wszystko działa jak urok, nie trzeba wpisywać FirebaseApp.initializeApp (this);
źródło
Powodem tego jest com.google.gms: wersja usług Google. Kiedy korzystałem z wersji 4.1.0 , napotkałem ten sam błąd. Następnie obniżam wersję. Przed
Po
Mam nadzieję, że rozwiąże to błąd.
źródło
Jeśli niedawno zaktualizowałeś Android Studio do 3.3.1, które mają problem z zależnościami com.google.gms: google-services (poniżej 4.2.0). Zaktualizuj com.google.gms: google-services do 4.2.0.
źródło
Jednym z powodów tego może być zapominanie o dodawaniu
android.permission.INTERNET
uprawnień wAndroidManifest.xml
źródło
dla mnie było to uaktualnianie zależności com.google.gms: google-services wewnątrz build.gradle do
źródło
Chociaż ręczne zainicjowanie Firebase za pomocą
FirebaseApp.initializeApp(this);
powoduje, że błąd znika, nie usuwa głównej przyczyny, niektóre dziwne problemy nie wydają się być rozwiązane, takie jakcom.google.android.c2dm.permission.RECEIVE
pozwolenia, które dotyczy tylko GCMUżyj nowszej wtyczki Gradle (np. Wtyczki Android 2.2.3 i Gradle 2.14.1) naprawiło wszystko. (Oczywiście konfiguracja musi być poprawna zgodnie z dokumentacją Firebase )
źródło
Mój problem nie został rozwiązany dzięki tej procedurze
Więc spróbowałem czegoś innego i teraz moja baza ogniowa została pomyślnie zainicjowana. Spróbuj dodać następujące w module aplikacji. Gradle
źródło
Kliknij Narzędzia> Firebase, aby otworzyć okno Asystenta.
Kliknij, aby rozwinąć jedną z wymienionych funkcji (na przykład Analytics), a następnie kliknij podany link do samouczka (na przykład Rejestruj zdarzenie Analytics).
Kliknij przycisk Połącz z Firebase, aby połączyć się z Firebase i dodać wymagany kod do swojej aplikacji.
https://firebase.google.com/docs/android/setup
źródło
Zainstalowana Firebase za pomocą narzędzi Android Studio ... Firebase ...
Wykonałem instalację za pomocą wbudowanych narzędzi z Android Studio (zgodnie z najnowszymi dokumentami z Firebase). Zainstalowało to podstawowe zależności, ale kiedy próbowałem połączyć się z bazą danych, zawsze pojawiał się błąd, który musiałem wywołać w celu zainicjowania, mimo że:
Otrzymywałem ten błąd bez względu na to, co zrobiłem.
Na koniec, po zobaczeniu komentarza w jednej z pozostałych odpowiedzi, zmieniłem następujące w mojej klasie z wersji 4.1.0 na:
Kiedy to zrobiłem, w końcu zobaczyłem błąd, który pomógł mi:
To jest problem. Wygląda na to, że wersja 4.1.0 z jakiegoś powodu nie daje tego błędu kompilacji - nie wspomina, że brakuje pliku google-services.json. Nie mam pliku google-services.json w mojej aplikacji, więc wyszedłem i dodałem go.
Ale ponieważ była to aktualizacja wykorzystująca istniejącą bazę danych firsbase w czasie rzeczywistym, nigdy nie musiałem generować tego pliku w przeszłości. Poszedłem do bazy ognia i wygenerowałem go, dodałem i naprawiłem problem.
Zmieniono z powrotem na 4.1.0
Po odkryciu tego wszystkiego zmieniłem z powrotem zmienną classpath (na 4.1.0) i przebudowałem ją, a następnie ponownie zawiesił się z błędem, że nie została zainicjowana.
Problemy z rootowaniem
źródło
użyj com.google.gms: google-services: 4.0.1 ”zamiast 4.1.0
źródło
wymiana pieniędzy
do
Pracuje dla mnie
źródło
Postępując zgodnie z odpowiedzią @Gabriel Lidenor, inicjowanie aplikacji z kontekstem nie działa w moim przypadku. Co jeśli próbujesz utworzyć aplikację firebase bez google-service.json? Więc przed zainicjowaniem dowolnej liczby aplikacji firebase, najpierw musisz zainicjować jako;
źródło
Będziemy musieli zainicjować Firebase w funkcji onCreate klasy aplikacji.
}
Kod w pliku manifestu: -
źródło
Powód i rozwiązanie: jest to częsty błąd, który najczęściej występuje. Powód: po zintegrowaniu projektu z Firebase dodaje on zależności
i ścieżka klasy
classpath 'com.google.gms:google-services:4.1.0'
wystarczy je zaktualizować
W ten sposób możesz zaktualizować
idź do grad sript i zrób to
źródło