web-dev-qa-db-fra.com

Impossible de trouver l'erreur d'importation de symboles com.google.firebase.iid.FirebaseInstanceIdService dans ionic3

Je n'ai aucune idée de la raison pour laquelle j'obtiens cette erreur chaque fois que j'essaie de créer la build de mon application.J'ai essayé de nombreuses solutions mais je n'ai pas pu résoudre ce problème.Je ne sais pas si des plugins causent des problèmes ou s'il y a un problème avec mon Code ou connectivité firebase ou firebase.J'ai supprimé les modules de noeud et exécuté l'installation de npm et supprimé et rajouté Android mais je reçois toujours cette erreur.

import com.google.firebase.iid.FirebaseInstanceIdService;
                              ^
  symbol:   class FirebaseInstanceIdService
  location: package com.google.firebase.iid
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:9: error: cannot find symbol
public class FirebasePluginInstanceIDService extends FirebaseInstanceIdService {
                                                     ^
  symbol: class FirebaseInstanceIdService
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:508: error: method getByteArray in class FirebaseRemoteConfig cannot be applied to given types;
                            : FirebaseRemoteConfig.getInstance().getByteArray(key, namespace);
                                                                ^
  required: String
  found: String,String
  reason: actual and formal argument lists differ in length
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:525: error: method getValue in class
FirebaseRemoteConfig cannot be applied to given types;
                            : FirebaseRemoteConfig.getInstance().getValue(key, namespace);
                                                                ^
  required: String
  found: String,String
  reason: actual and formal argument lists differ in length
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:579: error: no suitable method found
for setDefaults(Map<String,Object>,String)
                        FirebaseRemoteConfig.getInstance().setDefaults(defaultsToMap(defaults), namespace);
                                                          ^
    method FirebaseRemoteConfig.setDefaults(Map<String,Object>) is not applicable
      (actual and formal argument lists differ in length)
    method FirebaseRemoteConfig.setDefaults(int) is not applicable
      (actual and formal argument lists differ in length)
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:18: error: method does not override or implement a method from a supertype
    @Override
    ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\io\card\cordova\sdk\CardIOCordovaPlugin.Java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors
:app:compileDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
27 actionable tasks: 1 executed, 26 up-to-date
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 54s
cmd: Command failed with exit code 1 Error output:
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:6: error: cannot find symbol
import com.google.firebase.iid.FirebaseInstanceIdService;
                              ^
  symbol:   class FirebaseInstanceIdService
  location: package com.google.firebase.iid
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:9: error: cannot find symbol
public class FirebasePluginInstanceIDService extends FirebaseInstanceIdService {
                                                     ^
  symbol: class FirebaseInstanceIdService
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:508: error: method getByteArray in class FirebaseRemoteConfig cannot be applied to given types;
                            : FirebaseRemoteConfig.getInstance().getByteArray(key, namespace);
                                                                ^
  required: String
  found: String,String
  reason: actual and formal argument lists differ in length
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:525: error: method getValue in class
FirebaseRemoteConfig cannot be applied to given types;
                            : FirebaseRemoteConfig.getInstance().getValue(key, namespace);
                                                                ^
  required: String
  found: String,String
  reason: actual and formal argument lists differ in length
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:579: error: no suitable method found
for setDefaults(Map<String,Object>,String)
                        FirebaseRemoteConfig.getInstance().setDefaults(defaultsToMap(defaults), namespace);
                                                          ^
    method FirebaseRemoteConfig.setDefaults(Map<String,Object>) is not applicable
      (actual and formal argument lists differ in length)
    method FirebaseRemoteConfig.setDefaults(int) is not applicable
      (actual and formal argument lists differ in length)
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:18: error: method does not override or implement a method from a supertype
    @Override
    ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\io\card\cordova\sdk\CardIOCordovaPlugin.Java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 54s
[ERROR] An error occurred while running subprocess cordova.

        cordova build Android exited with exit code 1.
11
theCoder

Oui, c'est déprécié. Le correctif est assez simple, déplacez simplement le code ...

De onTokenRefresh() dans votre sous-classe FirebaseInstanceIdService

Pour onNewToken() dans votre sous-classe FirebaseMessagingService

Informations sur l'amortissement: https://firebase.google.com/support/release-notes/Android#update_-_april_02_2019

Je recommanderais de faire ce petit changement de code par rapport aux anciennes versions de Firebase. Probablement une bonne idée de migrer également vers AndroidX [ https://developer.Android.com/jetpack/androidx/migrate] pendant que vous y êtes.

17
Kaitlyn Hanrahan

Cela est dû aux mises à jour de Firebase du 05 avril. Ici https://firebase.google.com/support/release-notes/Android#update_-_april_02_2019 96, j'ai trouvé les dernières versions de travail et ajusté mon project.properties en conséquence comme ceci:

cordova.system.library.4=com.google.firebase:firebase-core:16.0.8

cordova.system.library.5=com.google.firebase:firebase-messaging:17.5.0

cordova.system.library.6=com.google.firebase:firebase-config:16.4.1

cordova.system.library.7=com.google.firebase:firebase-perf:16.2.4

Ici, toutes les dépendances sont verrouillées sur la version spécifique (mise à jour - 2 avril 2019) au lieu de + , ce qui vous procurerait la dernière version, rompant ainsi la version processus.

Maintenant, je peux construire avec succès! J'espère que ça aide!

project.properties peut être trouvé sur plates-formes/Android/project.properties

12
Spicy Software

Après plusieurs tests, ma solution a été de changer cordova-plugin-firebase par cordova-plugin-firebasex. https://github.com/dpa99c/cordova-plugin-firebase#migrating-from-cordova-plugin-firebase

rm -Rf platforms/Android
cordova plugin rm cordova-plugin-firebase
rm -Rf plugins/ node_modules/
npm install
cordova plugin add cordova-plugin-firebasex
cordova platform add Android

J'espère que ça aide.

https://github.com/dpa99c/cordova-plugin-firebase#androidx

Ce plugin a été migré pour utiliser AndroidX (Jetpack) qui est le successeur de la bibliothèque de support Android. Ceci est implémenté en ajoutant une dépendance à cordova-plugin-androidx qui active AndroidX dans la plate-forme Android d'un projet Cordova.

En effet, la version majeure des bibliothèques Firebase et Play Services du 17 juin 2019 a été migrée vers AndroidX.

Par conséquent, si votre projet inclut des plug-ins qui dépendent de la bibliothèque de support héritée Android, vous devez ajouter l'adaptateur cordova-plugin-androidx à votre projet. Ce plugin migrera dynamiquement tout code de plugin de la bibliothèque de support Android vers des équivalents AndroidX.

7
Juan Ignacio

Ce problème se produit en raison d'une version majeure de Firebase pour prendre en charge AndroidX

Solution:

  1. Supprimer Android (j'ai suivi cette étape. Mais il devrait y avoir une solution de contournement que je ne connais peut-être pas) - cordova platform rm Android

  2. Supprimer l'ancien plugin Firebase - cordova plugin rm cordova-plugin-firebase

  3. Ajouter un nouveau plugin Firebase - cordova plugin add cordova-plugin-firebasex

  4. Ajoutez à nouveau la plateforme - cordova platform add Android

Votre build va maintenant réussir.

3
PRASAD PATIL

D'accord. Il s'agit d'une erreur gradle. Cela est dû aux mises à jour de Firebase en avril, FirebaseInstanceIdService est obsolète et de nombreuses personnes sont confrontées au problème.

Consultez la documentation de référence pour FirebaseInstanceIdService

Cette classe est déconseillée.

En faveur de remplacer onNewToken dans FirebaseMessagingService. Une fois que cela a été mis en œuvre, ce service peut être supprimé en toute sécurité.

1
olajide

Si ce problème se produit dans React Native frameworks.Il existe deux solutions:

solution 1 (recommandée) :

changer la version de la base de feu dans les fichiers ci-dessous: Android\app\build.gradle

...
//implementation 'com.google.firebase:firebase-core'
//implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-messaging:17.6.0'
...

Et en Android\gradle.properties en bas du fichier ajouter

firebaseCoreVersion=16.0.8
firebaseMessagingVersion=17.6.0

solution 2:

Changement \node_modules\react-native-fcm\Android\src\main\Java\com\evollu\react\fcm\InstanceIdService.Java fichier complet comme ci-dessous.

package com.evollu.react.fcm;

import Android.content.Intent;
import Android.os.Bundle;
import Android.os.Handler;
import Android.os.Looper;
import Android.support.v4.content.LocalBroadcastManager;
import Android.util.Log;

import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.bridge.ReactContext;
import com.google.firebase.iid.FirebaseInstanceId;
//import com.google.firebase.iid.FirebaseInstanceIdService; //Commented FirebaseInstanceIdService
import com.google.firebase.messaging.FirebaseMessagingService;  //ADD FirebaseMessagingService

public class InstanceIdService extends FirebaseMessagingService {

    private static final String TAG = "InstanceIdService";

    /**
     * Called if InstanceID token is updated. This may occur if the security of
     * the previous token had been compromised. This call is initiated by the
     * InstanceID provider.
     */
    // [START refresh_token]
    @Override
    public void onNewToken(String token) { //Added onNewToken method
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d(TAG, "Refreshed token: " + refreshedToken);

        // Broadcast refreshed token
        Intent i = new Intent("com.evollu.react.fcm.FCMRefreshToken");
        Bundle bundle = new Bundle();
        bundle.putString("token", refreshedToken);
        i.putExtras(bundle);

        final Intent message = i;

        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            public void run() {
                // Construct and load our normal React JS code bundle
                ReactInstanceManager mReactInstanceManager = ((ReactApplication) getApplication()).getReactNativeHost().getReactInstanceManager();
                ReactContext context = mReactInstanceManager.getCurrentReactContext();
                // If it's constructed, send a notification
                if (context != null) {
                    LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(message);
                } else {
                    // Otherwise wait for construction, then send the notification
                    mReactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
                        public void onReactContextInitialized(ReactContext context) {
                            LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(message);
                        }
                    });
                    if (!mReactInstanceManager.hasStartedCreatingInitialContext()) {
                        // Construct it in the background
                        mReactInstanceManager.createReactContextInBackground();
                    }
                }
            }
        });
    }
}
1
Mahdi Bashirpour