Flutter Firebase 通知消息传递

Flutter Firebase Notification Messeging

我正在尝试在我的 flutter 应用程序中实现 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: Program type already present: com.project.my_project.Application com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes. Program type already present: com.project.my_project.Application at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131) at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118) at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102) at com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:444) ...

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes. Program type already present: com.project.my_project.Application <

扑博士 [✓] Flutter(频道稳定,1.22.3,在 Mac OS X 10.15.7 19H2,语言环境 pt-BR) • Flutter 版本 1.22.3 在 /Users/developer/Documents/Documents/Development/flutter • 框架修订版 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 二进制位于:/Applications/Android 工作室。app/Contents/jre/jdk/Contents/Home/bin/java • Java 版本 OpenJDK 运行时环境(构建 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 工作室位于 /Applications/Android 工作室。app/Contents ✗ 未安装 Flutter 插件;这增加了特定于 Flutter 的功能。(甚至知道它已安装工作) ✗ 未安装 Dart 插件;这增加了 Dart 特定的功能。(甚至知道它已安装并正在运行) • Java 版本 OpenJDK 运行时环境(构建 1.8.0_242-release-1644-b3-6222593)

[✓] VS 代码(版本 1.50.1) • /Applications/Visual Studio Code 上的 VS Code。app/Contents • Flutter 扩展版本 3.16.0

[✓] 已连接设备(可用 1 个) • sdk gphone x86 arm(移动) • emulator-5554 • android-x86 • Android 11 (API 30) (模拟器)

这是我项目中的一个工作示例。我记得跌跌撞撞地遇到了类似的事情。我写信只是为了快速回复,不确定这是否是正确的解决方案。

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");
  }
}

我通过更新 flutter 插件解决了这个问题。不知道发生了什么。