Распространение уведомлений Flutter Firebase

Nov 07 2020

Я пытаюсь реализовать firebase_messaging в своем приложении флаттера. При интеграции с Android, когда я пишу собственный код уровня приложения, я получил ошибку для повторяющихся классов, но не знаю почему.

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: тип программы уже присутствует: com.project.my_project.Application com.android.builder.dexing.DexArchiveMergerException: ошибка при слиянии архивов dex: узнайте, как решить проблему на https://developer.android.com/studio/build/dependencies#duplicate_classes. Тип программы уже присутствует: com.project.my_project.Application в com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow (D8DexArchiveMerger.java:131) в com.android.builder.dexing.D8DexArchiveMerger8exArgeDext (D8DexArchiveMerger8DexArchiveMerger8). в com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call (DexMergerTransformCallable.java:102) в com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run (DexMergingTask.kt: 44

  • Что пошло не так: не удалось выполнить задачу ': app: mergeProjectDexDebug'.

Ошибка при выполнении com.android.build.gradle.internal.tasks.Workers $ ActionFacade com.android.builder.dexing.DexArchiveMergerException: ошибка при слиянии архивов dex: узнайте, как решить проблему на https://developer.android.com/studio/build/dependencies#duplicate_classes. Тип программы уже присутствует: com.project.my_project.Application <

flutter doctor [✓] Flutter (стабильный канал, 1.22.3, в Mac OS X 10.15.7 19H2, локаль pt-BR) • Flutter версии 1.22.3 в / Users / developer / Documents / Documents / Development / flutter • Версия Framework 8874f21e79 (8 дней назад), 2020-10-29 14:14:35 -0700 • Ревизия двигателя a1440ca392 • Версия Dart 2.10.3

[✓] Набор инструментов Android - разработка для устройств Android (Android SDK версии 30.0.2) • Android SDK в / Users / developer / Library / Android / sdk • Платформа android-30, инструменты сборки 30.0.2 • Бинарный файл Java по адресу: / Приложения / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java-версия OpenJDK Runtime Environment (сборка 1.8.0_242-release-1644-b3-6222593) • Принимаются все лицензии Android.

[✓] Xcode - разработка для iOS и macOS (Xcode 12.1) • Xcode в /Applications/Xcode.app/Contents/Developer • Xcode 12.1, версия сборки 12A7403 • CocoaPods версии 1.10.0

[!] Android Studio (версия 4.1) • Android Studio в / Applications / Android Studio.app/Contents ✗ Плагин Flutter не установлен; это добавляет функциональность, специфичную для Flutter. (Даже если он установлен, работает) ✗ Плагин Dart не установлен; это добавляет специфические функции Dart (даже если известно, что он установлен и работает) • Java-версия OpenJDK Runtime Environment (сборка 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (версия 1.50.1) • VS Code в / Applications / Visual Studio Code.app/Contents • Расширение Flutter версии 3.16.0

[✓] Подключенное устройство (доступно 1) • sdk gphone x86 arm (мобильный) • emulator-5554 • android-x86 • Android 11 (API 30) (эмулятор)

Ответы

morpheus Nov 07 2020 at 02:25

Это рабочий пример из моего проекта. Я помню, как наткнулся на что-то подобное. Я пишу просто для того, чтобы быстро ответить, не уверен, что это правильное решение.

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

Решаю, взяв апдейт плагина flutter. не знаю, что происходит.