Flutter Firebase Notification Messeging

Nov 07 2020

Estou tentando implementar firebase_messaging em meu aplicativo de flutter. Na integração do Android, quando escrevo código de nível de aplicativo nativo, recebo um erro para classes duplicadas, mas não sei por quê.

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 de programa já presente: com.project.my_project.Application com.android.builder.dexing.DexArchiveMergerException: Erro ao mesclar arquivos dex: Saiba como resolver o problema em https://developer.android.com/studio/build/dependencies#duplicate_classes. Tipo de programa já presente: com.project.my_project.Application em com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow (D8DexArchiveMerger.java:131) em com.android.builder.dexing.D8DexArchiveMerger.merge8Archives.j8ArchiveMerger.chives.j8 em com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call (DexMergerTransformCallable.java:102) em com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run (DexMergingTask.kt: 444) ...

  • O que deu errado: a execução falhou para a tarefa ': app: mergeProjectDexDebug'.

Ocorreu uma falha ao executar com.android.build.gradle.internal.tasks.Workers $ ActionFacade com.android.builder.dexing.DexArchiveMergerException: Erro ao mesclar arquivos dex: Saiba como resolver o problema em https://developer.android.com/studio/build/dependencies#duplicate_classes. Tipo de programa já presente: com.project.my_project.Application <

flutter doctor [✓] Flutter (Canal estável, 1.22.3, no Mac OS X 10.15.7 19H2, locale pt-BR) • Flutter versão 1.22.3 em / Usuários / desenvolvedor / Documentos / Documentos / Desenvolvimento / flutter • Revisão da estrutura 8874f21e79 (8 dias atrás), 2020-10-29 14:14:35 -0700 • Revisão do motor a1440ca392 • Dart versão 2.10.3

[✓] Conjunto de ferramentas Android - desenvolver para dispositivos Android (Android SDK versão 30.0.2) • Android SDK em / Users / developer / Library / Android / sdk • Platform android-30, build-tools 30.0.2 • Java binário em: / Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Versão Java OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) • Aceita todas as licenças do Android.

[✓] Xcode - desenvolver para iOS e macOS (Xcode 12.1) • Xcode em /Applications/Xcode.app/Contents/Developer • Xcode 12.1, Build versão 12A7403 • CocoaPods versão 1.10.0

[!] Android Studio (versão 4.1) • Android Studio em / Applications / Android Studio.app/Contents ✗ Plug-in Flutter não instalado; isto adiciona funcionalidade específica do Flutter. (Mesmo sabendo que está instalado funcionando) ✗ Plugin do Dart não instalado; isso adiciona funcionalidade específica do Dart. (Mesmo sabendo que está instalado e funcionando) • Java versão OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] Código VS (versão 1.50.1) • Código VS em / Applications / Visual Studio Code.app/Contents • Extensão Flutter versão 3.16.0

[✓] Dispositivo conectado (1 disponível) • braço sdk gphone x86 (móvel) • emulador-5554 • android-x86 • Android 11 (API 30) (emulador)

Respostas

morpheus Nov 07 2020 at 02:25

Este é um exemplo prático do meu projeto. Lembro-me de ter tropeçado em algo assim. Estou escrevendo apenas para dar uma resposta rápida, não tenho certeza se esta é a solução correta.

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

Eu resolvo fazendo uma atualização do plugin flutter. não sei o que acontece.