web-dev-qa-db-fra.com

Android - FirebaseApp/Firebase-Initialization ne démarre pas

Je souhaite implémenter le plug-in Firebase-Messaging dans mon application Android . J'ai commencé avec l'exemple "quickstart-Android-master/messaging" de github: https://github.com/firebase/ quickstart-Android/arbre/maître/messagerie

Cela fonctionne pour moi! Log-Output:

D/FirebaseApp﹕ com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
D/FirebaseApp﹕ Initialized class com.google.firebase.iid.FirebaseInstanceId.
D/FirebaseApp﹕ com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization
D/FirebaseApp﹕ Initialized class com.google.Android.gms.measurement.AppMeasurement.
I/FirebaseInitProvider﹕ FirebaseApp initialization successful

Mais si je veux implémenter le plugin "com.google.firebase: firebase-messaging: 9.0.2" dans mon application, le fichier FirebaseApp n'est pas initialisé! Donc, le plugin FirebaseApp ne démarre pas! - Aucun journal ou jeton reçu!

J'ai également ajouté le plugin apply au fichier build.gradle dans le répertoire "app":

    apply plugin: 'com.Android.application'

Android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-messaging:9.0.2'
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

Et le plugin google-services à build.gradle dans le répertoire "racine":

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

Les problèmes pourraient être:

  • AndroidAnnotations, Proguard, Saveurs de produits ... 
12

Mon problème était la "fusion manifeste" . Si j'utilise le 

xmlns:tools="http://schemas.Android.com/tools"

et 

tools:node="replace"

dans la balise d'application du manifeste, FirebaseApp ne sera pas initialisé!

Si vous utilisez replace attr sur tools: node, il remplacera votre déclaration de priorité inférieure avec l'annotation (voir plus ici ). Vous devez utiliser les attributs merge ou merge uniquement au lieu.

Donc, ce que j'ai exactement fait:

Cela ne marche pas:

<application
            Android:name="xxx"
            Android:icon="@mipmap/ic_launcher"
            Android:label="@string/application_name"
            Android:theme="@style/Theme.TemplateStyle"
            tools:node="replace">

cela marche:

<application
            Android:name="xxx"
            Android:icon="@mipmap/ic_launcher"
            Android:label="@string/application_name"
            Android:theme="@style/Theme.TemplateStyle">
            <!-- tools:node="replace"-->

Si vous souhaitez écraser ou remplacer certains attributs, utilisez plutôt tools:replace!

17

Ceci ferme la question pour moi:

  • implémentation 'com.google.firebase: firebase-crash: 16.2.1'

  • implémentation 'com.google.firebase: firebase-auth: 16.1.0'

0
Ashot

Dans mon cas, ces autorisations manquaient dans le fichier manifeste Android:

<permission
        Android:name="com.app.appname.permission.C2D_MESSAGE"
        Android:protectionLevel="signature" />

   <uses-permission Android:name="com.app.appname.permission.C2D_MESSAGE" />
    <uses-permission Android:name="com.google.Android.c2dm.permission.RECEIVE" />
0
Srihari Karanth