Flutter

Flutter FCM with Android

th_bigLight 2020. 11. 11. 19:13

에러 내용 : 

Fatal Exception: java.lang.RuntimeException Unable to create service io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService: java.lang.RuntimeException: PluginRegistrantCallback is not set.

자세한 설명은 블로그 참조

spiralmoon.tistory.com/entry/Flutter-Unable-to-create-service-ioflutterpluginsfirebasemessagingFlutterFirebaseMessagingService-javalangRuntimeException-PluginRegistrantCallback-is-not-set

 

[Flutter] Unable to create service io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService: java.lang.RuntimeExcept

Stacktrace Fatal Exception: java.lang.RuntimeException Unable to create service io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService: java.lang.RuntimeException: PluginRegistrantCall..

spiralmoon.tistory.com

친절한 블로거님 덕분에 쉽게 해결하나 싶었는데, 

현재 진행중인 프로젝트는 Android가 Java가 아닌 kotlin으로 되어있는 상태,,, (왠지 모르겠음. 만들때 선택했던거같기도,,?)

 

해결방법 :

1. Applicaion.kt 를 생성하한다.

import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
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"));
    }
}

 

생성경로는 MainActkvkty.kt가 있는 폴더에 동일하게 생성

대체적으로 <app-name>/android/app/src/main/java/<app-organization-path>에 있음.

 

2. 해당 Application.kt 맨 위에 package 추가

package com.example.myapplication

 

3. AndroidManifest.xml application태그 android:name 속성 변경

android:name="io.flutter.app.FlutterApplication" => android:name=".Application"

 

완료.