0

Au démarrage de l'application, ce qui suit est en cours d'impression à la console:initialisation de l'API Firebase échoue au démarrage

Firebase API initialization failure.               
java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.google.firebase.FirebaseApp.zza(Unknown Source) 
    at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
    //.. 
Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()' is inaccessible to class 'com.google.firebase.iid.zzg' 

configuration Firebase a été faite en suivant les instructions:

  1. classpath 'com.google.gms:google-services:3.1.0' a été ajouté à haut niveau build.gradle
  2. apply plugin: 'com.google.gms.google-services' a été ajouté à niveau d'application build.gradle

Courir ./gradlew app:dependencies, je peux voir la sortie suivante:

com.google.firebase:firebase-core:9.0.0 
    \--- com.google.firebase:firebase-analytics:9.0.0 
      +--- com.google.android.gms:play-services-basement:9.0.0 
      | \--- com.android.support:support-v4:23.0.0 -> 25.3.1 (*) 
      +--- com.google.firebase:firebase-common:9.0.0 
      | +--- com.google.android.gms:play-services-basement:9.0.0 (*) 
      | \--- com.google.android.gms:play-services-tasks:9.0.0 
      |   \--- com.google.android.gms:play-services-basement:9.0.0 (*) 
      \--- com.google.firebase:firebase-analytics-impl:9.0.0 
       +--- com.google.android.gms:play-services-base:9.0.0 
       | +--- com.google.android.gms:play-services-basement:9.0.0 (*) 
       | +--- com.google.firebase:firebase-common:9.0.0 (*) 
       | \--- com.google.android.gms:play-services-tasks:9.0.0 (*) 
       +--- com.google.android.gms:play-services-basement:9.0.0 (*) 
       +--- com.google.firebase:firebase-iid:9.0.0 
       | +--- com.google.android.gms:play-services-basement:9.0.0 (*) 
       | \--- com.google.firebase:firebase-common:9.0.0 (*) 
       \--- com.google.firebase:firebase-common:9.0.0 (*) 

Peut-être que cela fait partie de la question, peut-être pas, mais je trouve étrange que la dernière version du plug-in comprend une ancienne version de Firebase (9.0.0) au lieu de 11.0.1.

En outre, comme les états d'erreur, le problème est causé par ce qui suit:

java.lang.IllegalAccessError: Method 'void android.support.v4.content.ContextCompat.<init>()' 

Cela semble suggérer que la bibliothèque de soutien v4 peut être utile à la question.

Qu'est-ce qui cause ces problèmes, et quelle est la solution?

+0

Êtes-vous sûr de compiler Firebase 11.0.1? –

+0

@ cricket_007 Quoi? Le plugin 'google-services' inclut la bibliothèque, et comme on le voit dans la sortie de' ./gradlew app: dependencies', il ajoute la version '9.0.0'. – Orbit

+0

Le plugin ajoute des analyses à votre classpath. Il ne compile pas d'autre partie de Firebase dans votre application réelle. –

Répondre

1

Quand je lance la tâche dépendances, sans Google Play ou bibliothèques Firebase spécifié comme dépendances dans le module app build.gradle, je vois ce message d'avertissement en haut de la sortie produite:

google-services plugin could not detect any version for com.google.android.gms or com.google.firebase, default version: 9.0.0 will be used. 
please apply google-services plugin at the bottom of the build file. 

Faire défiler ce message droit de voir: default version: 9.0.0 will be used

la raison pour laquelle le plug-in doit être appliqué après les dépendances bloc dans le build.gradle est qu'il analyse la liste des bibliothèques pour déterminer quelle version à utiliser pour son traitement. Vos dépendances de module doivent inclure au moins une bibliothèque Firebase ou Google Play afin que le plugin puisse choisir un numéro de version.

Vous indiquez dans un commentaire à votre message que Explicitement selon le noyau n'est pas nécessaire. Est-ce que c'est dans la documentation quelque part? En consultant les guides d'installation de chacune des API Firebase (Analytics, base de données en temps réel, stockage, rapports de plantage, etc.), chacun d'entre eux comprend une étape permettant d'ajouter la bibliothèque de l'API aux dépendances.

+0

Si vous cliquez pour ajouter une application Android à votre projet Firebase, il lance un modal qui vous guidera à travers les étapes. La dernière étape demande au développeur d'inclure 'classpath 'com.google.gms: google-services: 3.1.0'' dans leur niveau supérieur' build.gradle' et d'appliquer le plugin au niveau de leur application 'build.gradle'. Il mentionne ensuite que Google Analytics est inclus par défaut et n'a pas besoin d'inclure d'autres dépendances. – Orbit

+0

Notez que l'ajout explicite de 'compile 'com.google.firebase: firebase-core: 11.0.1'' à mes dépendances fait augmenter la version comme indiqué dans la sortie de' ./gradlew app: dependencies'. Cependant, bien que cela corrige l'erreur d'origine, il y a maintenant un problème étrange où l'appel de mon présentateur 'getView()', qui dans ce cas est une activité, renvoie null. Supprimer Firebase résout ce problème, que je trouve étrange. Ce problème n'est pas nécessairement associé à cette question, donc j'en soumettrai probablement un autre. – Orbit