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.
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.
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
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.
Ce problème se produit en raison d'une version majeure de Firebase pour prendre en charge AndroidX
Solution:
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
Supprimer l'ancien plugin Firebase - cordova plugin rm cordova-plugin-firebase
Ajouter un nouveau plugin Firebase - cordova plugin add cordova-plugin-firebasex
Ajoutez à nouveau la plateforme - cordova platform add Android
Votre build va maintenant réussir.
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é.
Si ce problème se produit dans React Native frameworks.Il existe deux solutions:
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
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();
}
}
}
});
}
}