2018년 6월 5일 화요일

FCM(Firebase Cloud Messaging) 안드로이드 앱을 만드는 중에 is not assignable to 'android.app.Service' Validates resource references inside Android XML files 에러 해법





FCM 안드로이드 앱을 만드는 중에 아래와 같은 에러가 발생하는 원인과 해결책

가정하기를 
 -. 패키지명 : com.example.joe.exfcmtest
 -. com.google.firebase.messaging.FirebaseMessagingService를 상속받을 클래스가 MyFirebaseMessagingService라고 할때

이러한 상황가운데서 아래와 같은 에러를 만난다면 

'com.example.joe.exfcmtest.MyFirebaseMessagingService' is not assignable to 'android.app.Service' less... (Ctrl+F1) 
Validates resource references inside Android XML files.

앱 수준의 build.gradle(프로젝트 수준의 build.gradle이 아님)에서 필요한 아래의 dependencies가 빠져 있어서의 문제다.

compile 'com.google.firebase:firebase-messaging:12.0.1'  (버전은 현재의 최신 버전과 다를수 있음)

이 문제는 참으로 황당하게도 구글의 Firebase SDK 추가에 대한 설명 자체에서 빼먹고 제시해 주지 않음으로 인해 만나게되는 황당한 에러이다.
Firebase 콘솔에서 제시한 대로 따라하다보면 아래 이미지에서 보듯이 compile 'com.google.firebase:firebase-messaging:12.0.1'를 포함시키라는 설명이 전혀 없다. 나쁜...



이로인해 Manifest 파일의 com.google.firebase.messaging.FirebaseMessagingService를 상속받을 Service 클래스에 대해 아래 그림과 같은 에러가 발생한다.

        <service android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>



그리고 다음 에러



이 문제를 해결할려면 아래 그림에서 보는바와 같이 앱 수준의 build.gradle



compile 'com.google.firebase:firebase-messaging:12.0.1'를 dependencies에 포함시켜야 된다.



안드로이드는 너무 자주, 많이 바뀌는 통에...

댓글 없음:

댓글 쓰기