FlutterFirebase通知メッセージング

Nov 07 2020

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:プログラムタイプはすでに存在します:com.project.my_project.Application com.android.builder.dexing.DexArchiveMergerException:dexアーカイブのマージ中にエラーが発生しました:問題を解決する方法については、 https://developer.android.com/studio/build/dependencies#duplicate_classes。プログラムタイプはすでに存在します:com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131)のcom.project.my_project.Application(com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger)) com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102)at com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:444).. ..

  • 何が問題だったのか:タスク ':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 <

フラッタードクター[✓]フラッター(チャンネル安定版、1.22.3、Mac OS X 10.15.7 19H2、ロケールpt-BR)•/ Users / developer / Documents / Documents / Development / flutterのFlutterバージョン1.22.3•フレームワークリビジョン8874f21e79(8日前)、2020-10-29 14:14:35-0700•エンジンリビジョンa1440ca392•Dartバージョン2.10.3

[✓] Androidツールチェーン-Androidデバイス用に開発(Android SDKバージョン30.0.2)•/ Users / developer / Library / Android / sdkにあるAndroidSDK•プラットフォームandroid-30、build-tools 30.0.2•Javaバイナリ:/ Applications / AndroidStudio.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)•/ Applications / Xcode.app / Contents / DeveloperにあるXcode•Xcode 12.1、ビルドバージョン12A7403•CocoaPodsバージョン1.10.0

[!] Android Studio(バージョン4.1)•/ Applications / AndroidStudio.app / ContentsのAndroidStudio✗Flutterプラグインがインストールされていません。これにより、Flutter固有の機能が追加されます(インストールされていても機能します)✗Dartプラグインがインストールされていません。これにより、Dart固有の機能が追加されます。(インストールされて機能していることもわかっています)•JavaバージョンのOpenJDKランタイム環境(ビルド1.8.0_242-release-1644-b3-6222593)

[✓] VS Code(バージョン1.50.1)•/ Applications / Visual StudioCode.app/ContentsのVSCode•Flutter拡張バージョン3.16.0

[✓]接続されたデバイス(1つ利用可能)•sdk gphone x86アーム(モバイル)•エミュレーター-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プラグインをアップデートして解決します。何が起こるかわからなかった。