Messeging de notification Flutter Firebase

Nov 07 2020

J'essaie d'implémenter firebase_messaging dans mon application Flutter. Sur l'intégration Android, lorsque j'écris du code natif au niveau de l'application, j'ai une erreur pour les classes en double mais je ne sais pas pourquoi.

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;

class Application: FlutterApplication(), PluginRegistrantCallback {

    override fun onCreate() {
        super.onCreate()
        FlutterFirebaseMessagingService.setPluginRegistrant(this)
    }
    override fun registerWith(registry: PluginRegistry?) {
        io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));     
    }
}

D8: type de programme déjà présent: com.project.my_project.Application com.android.builder.dexing.DexArchiveMergerException: erreur lors de la fusion des archives dex: découvrez comment résoudre le problème sur https://developer.android.com/studio/build/dependencies#duplicate_classes. Type de programme déjà présent: com.project.my_project.Application à com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow (D8DexArchiveMerger.java:131) à com.android.builder.dexing.D8DexArchiveMerger.mergeDexing.D8DexArchiveMerger.mergeDexingD8DexArchiveMerger.mergeDexingArives11. à com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call (DexMergerTransformCallable.java:102) à com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run (DexMergingTask.kt: 444) ...

  • Problème: l'exécution de la tâche «: app: mergeProjectDexDebug» a échoué.

Une erreur s'est produite lors de l'exécution de com.android.build.gradle.internal.tasks.Workers $ ActionFacade com.android.builder.dexing.DexArchiveMergerException: Erreur lors de la fusion des archives dex: découvrez comment résoudre le problème sur https://developer.android.com/studio/build/dependencies#duplicate_classes. Type de programme déjà présent: com.project.my_project.Application <

flutter doctor [✓] Flutter (Channel stable, 1.22.3, sur Mac OS X 10.15.7 19H2, locale pt-BR) • Flutter version 1.22.3 dans / Users / developer / Documents / Documents / Development / flutter • Framework revision 8874f21e79 (il y a 8 jours), 2020-10-29 14:14:35 -0700 • Révision du moteur a1440ca392 • Dart version 2.10.3

[✓] Chaîne d'outils Android - développement pour les appareils Android (Android SDK version 30.0.2) • SDK Android sur / Users / developer / Library / Android / sdk • Plateforme android-30, build-tools 30.0.2 • Java binaire sur: / Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Version Java OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) • Toutes les licences Android acceptées.

[✓] Xcode - développer pour iOS et macOS (Xcode 12.1) • Xcode sur /Applications/Xcode.app/Contents/Developer • Xcode 12.1, Build version 12A7403 • CocoaPods version 1.10.0

[!] Android Studio (version 4.1) • Android Studio dans / Applications / Android Studio.app/Contents ✗ Le plugin Flutter n'est pas installé; cela ajoute des fonctionnalités spécifiques à Flutter (sachez même qu'il fonctionne correctement) ✗ Le plugin Dart n'est pas installé; cela ajoute des fonctionnalités spécifiques à Dart. (Même sachez qu'il est installé et fonctionne) • Version Java Environnement d'exécution OpenJDK (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.50.1) • VS Code dans / Applications / Visual Studio Code.app/Contents • Extension Flutter version 3.16.0

[✓] Appareil connecté (1 disponible) • sdk gphone x86 arm (mobile) • emulator-5554 • android-x86 • Android 11 (API 30) (émulateur)

Réponses

morpheus Nov 07 2020 at 02:25

Ceci est un exemple de travail de mon projet. Je me souviens être tombé sur quelque chose comme ça. J'écris juste pour donner une réponse rapide, je ne sais pas si c'est la bonne solution.

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
// import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
  @Override
  public void onCreate() {
    super.onCreate();
    FlutterFirebaseMessagingService.setPluginRegistrant(this);
  }

  @Override
  public void registerWith(PluginRegistry registry) {
    registry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin");
  }
}
lucasmelo Nov 11 2020 at 19:55

Je le résous en prenant une mise à jour du plugin flutter. Je ne sais pas ce qui se passe.