Flatter Firebase Notification Messeging
Ich versuche, firebase_messaging in meiner Flatteranwendung zu implementieren. Bei der Android-Integration wurde beim Schreiben von nativem Code auf Anwendungsebene ein Fehler für doppelte Klassen angezeigt, aber ich weiß nicht warum.
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: Programmtyp bereits vorhanden: com.project.my_project.Application com.android.builder.dexing.DexArchiveMergerException: Fehler beim Zusammenführen von Dex-Archiven: Informationen zum Beheben des Problems finden Sie unter https://developer.android.com/studio/build/dependencies#duplicate_classes. Der Programmtyp ist bereits vorhanden: com.project.my_project.Application at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow (D8DexArchiveMerger.java:131) at com.android.builder.dexing.D8DexArchiveMerger.mergeDexch unter com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call (DexMergerTransformCallable.java:102) unter com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run (DexMergingTask.kt: 444)
- Was schief gelaufen ist: Ausführung für Aufgabe ': app: mergeProjectDexDebug' fehlgeschlagen.
Beim Ausführen von com.android.build.gradle.internal.tasks.Workers $ ActionFacade com.android.builder.dexing.DexArchiveMergerException ist ein Fehler aufgetreten https://developer.android.com/studio/build/dependencies#duplicate_classes. Programmtyp bereits vorhanden: com.project.my_project.Application <
Flatterarzt [✓] Flattern (Kanal stabil, 1.22.3, unter Mac OS X 10.15.7 19H2, Gebietsschema pt-BR) • Flattern Version 1.22.3 unter / Benutzer / Entwickler / Dokumente / Dokumente / Entwicklung / Flattern • Framework-Revision 8874f21e79 (vor 8 Tagen), 29.10.2020 14:14:35 -0700 • Motorrevision a1440ca392 • Dart-Version 2.10.3
[✓] Android-Toolchain - Entwickeln für Android-Geräte (Android SDK Version 30.0.2) • Android SDK unter / Benutzer / Entwickler / Bibliothek / Android / SDK • Plattform Android-30, Build-Tools 30.0.2 • Java-Binärdatei unter: / Anwendungen / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java-Version OpenJDK Runtime Environment (Build 1.8.0_242-release-1644-b3-6222593) • Alle Android-Lizenzen akzeptiert.
[✓] Xcode - Entwicklung für iOS und MacOS (Xcode 12.1) • Xcode unter /Applications/Xcode.app/Contents/Developer • Xcode 12.1, Build-Version 12A7403 • CocoaPods Version 1.10.0
[!] Android Studio (Version 4.1) • Android Studio unter / Applications / Android Studio.app/Contents ✗ Flatter-Plugin nicht installiert; Dadurch werden flatterspezifische Funktionen hinzugefügt. (Auch wenn Sie wissen, dass die Installation funktioniert.) ✗ Das Dart-Plugin ist nicht installiert. Dies fügt Dart-spezifische Funktionen hinzu. (Auch wenn Sie wissen, dass es installiert ist und funktioniert.) • Java-Version OpenJDK Runtime Environment (Build 1.8.0_242-release-1644-b3-6222593)
[✓] VS-Code (Version 1.50.1) • VS-Code unter / Applications / Visual Studio Code.app/Contents • Flattererweiterung Version 3.16.0
[✓] Verbundenes Gerät (1 verfügbar) • SDK-Gphone x86-Arm (mobil) • Emulator-5554 • Android-x86 • Android 11 (API 30) (Emulator)
Antworten
Dies ist ein Arbeitsbeispiel aus meinem Projekt. Ich erinnere mich, dass ich in so etwas gestolpert bin. Ich schreibe nur, um eine schnelle Antwort zu geben, nicht sicher, ob dies die richtige Lösung ist.
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");
}
}
Ich löse es, indem ich ein Update des Flatter-Plugins nehme. Ich weiß nicht, was passiert.