2016-05-20 12 views
58

Nach der Migration zu Firebase Cloud Messaging. Beim Öffnen meiner App stürzt es ab und gibt eine Fehlermeldung aus java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist. Ich habe bereits meine neue google-services.json und mein SDK aktualisiert.FirebaseApp mit dem Namen [DEFAULT] existiert nicht

Hier ist mein MainActivity

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

//Check Google play service 
    GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance(); 
    int resultCode = googleAPI.isGooglePlayServicesAvailable(this); 

    if (resultCode != ConnectionResult.SUCCESS) { 
     if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) { 
      GooglePlayServicesUtil.getErrorDialog(resultCode, this, 
        PLAY_SERVICES_RESOLUTION_REQUEST).show(); 
     } else { 
      Log.e(LOG_TAG, "This device is not supported."); 
      finish(); 
     } 
    } 

    Log.i(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken()); 

} 
} 

Antwort

51

Bitte überprüfen Sie tun, Sie

hinzugefügt
apply plugin: 'com.google.gms.google-services' 

am unteren Rand der App gradle Datei und dann sauber und neu erstellen, das Projekt

+0

Ich habe das 'apply plugin: 'com.google.gms.google-services' aus meiner App entfernt, aber beim Aufruf von' FirebaseInstanceId.getInstance(). GetToken() 'in meiner' MainActivity' meine neue Fehlermeldung App stürzt ab. – natsumiyu

+1

mein schlechtes ... ich musste das 'apply plugin: 'com.google.gms.google-services'' hinzufügen? versuchend, es hinzuzufügen, finde ich noch Fehler. es heißt 'Klasse nicht gefunden" com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor "' – natsumiyu

+0

Hallo Mori, Sie können diesen Fehler jetzt ignorieren und sie werden dieses Problem beheben in der nächsten Version. das sagt das Firebase-Team :). – Venkatesan

0

Android Studio

  1. anwenden Plugin: 'com.google.gms.google-Dienstleistungen' (build.gradle - Modulschicht)
  2. -Menü ~> Build ~> CleanProject

Works für mich ok.

9

build.gradle Datei:

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

allprojects { 
    repositories { 
     jcenter() 
     mavenLocal() 
    } 
} 

\ app \ build.gradle Datei:

apply plugin: 'com.android.application' 

android { 
    .. 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    .. 
    compile 'com.google.firebase:firebase-core:9.0.2' 
    compile 'com.google.firebase:firebase-messaging:9.0.2' 
} 

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

Fehler: (90, 0) Plugin mit der ID 'com.google.gms.google-services' nicht gefunden. –

+0

behoben? @GilbertoIbarra – Shadow

11

ich ähnliches Problem gehabt haben, und für mich war es ein Bug/Problem mit manifester Fusion. Ich habe festgestellt, dass FirebaseInitProvider wurde nicht in endgültige Manifest-Datei wegen tools:node="replace" in der Manifest-Datei meiner App injiziert. Versuchen Sie also, dieses XML-Tag zu entfernen, und FirebaseInitProvider wird injiziert und Firebase kann ordnungsgemäß initialisiert werden.

+0

können Sie bitte aktualisieren Sie Ihre Antwort für diejenigen, die nicht viel familier mit Merger-Tool sind @jmodrako – Killer

+0

Derzeit habe ich auf Tools aktualisiert: replace = "android: name" anstelle von Tools: node = "ersetzen". hoffe, dass Hilfe – Killer

2

Verschieben Sie Ihre Firebase-Initialisierung in die onCreate of Application-Klasse. Wenn Sie Offline-Persistenz aktiviert haben, sollte FirebaseDatabase.getInstance() .setPersistenceEnabled (true) auch vor anderen Initialisierungen angezeigt werden.

+0

unten versehentlich abstimmen, so dass ich nicht zulassen zu upvote :( –

20

Nicht sicher, wenn es hier relevant ist. Aber es gibt ein anderes Szenario, in dem dieser Absturz passieren kann.


Wenn Ihre Anwendung einen Dienst (mit anderem Prozess) hat und Sie Ihre eigene Application Klasse zu schaffen, der Service und der Vordergrund App werden die gleiche Anwendungsklasse (nicht gleiche Instanz) verwenden zu initialisieren. Jetzt, wenn ich com.google.firebase:firebase-crash Abhängigkeit verwendet, um Abstürze zu behandeln, erstellt es einen Hintergrunddienst your.app.packagename:background_crash. Aus irgendeinem Grund führte dies zu Abstürzen meiner App. Insbesondere weil in meiner Application-Klasse, war ich wie ein Anruf tätige,

FirebaseDatabase.getInstance().setPersistenceEnabled(true); 

Ich gehe davon aus, der Hintergrunddienst, wenn sie mit unserer Anwendungsklasse Initing, irgendwie ist Firebase nicht initialisiert. Um dies zu beheben, ich habe

if (!FirebaseApp.getApps(this).isEmpty()) 
     FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
+0

Dies passiert auch mit Anzeigen. Wenn ein Benutzer auf eine Anzeige klickt, dann kehrt zur App Firebase nicht mehr verfügbar. – theJosh

+0

@Codexvalley, In meinem Fall Es gab einen anderen Prozess (Adobe Creative SDK Image Editor) namens app: editor. Er verwendete dieselbe Anwendungsklasse und versuchte daher Token von einer nicht existierenden Firebase App zu bekommen. Bevor ich das Token löste, löste ich mein Problem. Vielen Dank!) – rzaaeeff

0

in Ihrer Abhängigkeit fügen Sie einfach Abhängigkeiten { kompilieren filetree (dir: 'libs', schließen ein: [ '* .jar']) .. Kompilierung ‚com.google .FireBase: Firebase-Kern: 9.0.2' Kompilierung 'com.google.firebase: Feuerbasis-Messaging: 9.0.2' }

Plugin anwenden: 'com.google.gms.google-services'

9

@jmodrako Antwort mein Problem gelöst. .. tools:node="replace"-tools:node="merge"

erklärt ... auf AndroidManifest.xml

Von

<application 
... 
tools:node="replace"> 

Um

<application 
... 
tools:node="merge"> 

Merge Probleme mit Bibliothek Themen? Build-Probleme gelöst tools:replace="android:theme"

Credits https://stackoverflow.com/a/38060272/2765087

0

Registrieren Ihre Anwendung in Firebase verwenden und die Google-services.json zu Ihrem Stammprojekt kopieren.

Wenden Sie classpath 'com.google.gms:google-services:3.1.0 auf Sie root build.gradle.

Übernehmen Sie apply plugin: 'com.google.gms.google-services zu Ihrem Projekt grandle.

Verwandte Themen