Flutter Firebase Notification Messeging

Nov 07 2020

Sto cercando di implementare firebase_messaging nella mia applicazione flutter. Sull'integrazione Android quando scrivo codice nativo a livello di applicazione ho ricevuto un errore per le classi duplicate ma non so perché.

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: tipo di programma già presente: com.project.my_project.Application com.android.builder.dexing.DexArchiveMergerException: errore durante l'unione degli archivi dex: scopri come risolvere il problema all'indirizzo https://developer.android.com/studio/build/dependencies#duplicate_classes. Tipo di programma già presente: com.project.my_project.Application su com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow (D8DexArchiveMerger.java:131) su com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives. su com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call (DexMergerTransformCallable.java:102) su com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run (DexMergingTask.kt: 444) ...

  • Cosa è andato storto: esecuzione non riuscita per l'attività ': app: mergeProjectDexDebug'.

Si è verificato un errore durante l'esecuzione di com.android.build.gradle.internal.tasks.Workers $ ActionFacade com.android.builder.dexing.DexArchiveMergerException: errore durante l'unione degli archivi dex: scopri come risolvere il problema all'indirizzo https://developer.android.com/studio/build/dependencies#duplicate_classes. Tipo di programma già presente: com.project.my_project.Application <

flutter doctor [✓] Flutter (canale stabile, 1.22.3, su Mac OS X 10.15.7 19H2, locale pt-BR) • Flutter versione 1.22.3 in / Users / developer / Documents / Documents / Development / flutter • Framework revision 8874f21e79 (8 giorni fa), 2020-10-29 14:14:35 -0700 • Revisione motore a1440ca392 • Versione Dart 2.10.3

[✓] Toolchain Android - sviluppo per dispositivi Android (Android SDK versione 30.0.2) • Android SDK su / Users / developer / Library / Android / sdk • Piattaforma android-30, build-tools 30.0.2 • Java binary su: / Applicazioni / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Versione Java OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) • Tutte le licenze Android accettate.

[✓] Xcode - sviluppo per iOS e macOS (Xcode 12.1) • Xcode su /Applications/Xcode.app/Contents/Developer • Xcode 12.1, versione Build 12A7403 • CocoaPods versione 1.10.0

[!] Android Studio (versione 4.1) • Android Studio in / Applicazioni / Android Studio.app/Contents ✗ Plugin Flutter non installato; questo aggiunge funzionalità specifiche di Flutter (anche se è installato funzionante) ✗ Plugin Dart non installato; questo aggiunge funzionalità specifiche di Dart. (Anche sapere che è installato e funzionante) • Versione Java OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (versione 1.50.1) • VS Code in / Applicazioni / Visual Studio Code.app/Contents • Estensione Flutter versione 3.16.0

[✓] Dispositivo connesso (1 disponibile) • sdk gphone x86 arm (mobile) • emulator-5554 • android-x86 • Android 11 (API 30) (emulatore)

Risposte

morpheus Nov 07 2020 at 02:25

Questo è un esempio funzionante dal mio progetto. Ricordo di essere incappato in qualcosa del genere. Scrivo solo per dare una risposta rapida, non sono sicuro che questa sia la soluzione corretta.

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

Lo risolvo prendendo un aggiornamento del plugin flutter. non so cosa succede.