0

기존의 Android 애플리케이션에 firebase 알림을 통합하려고합니다. 하지만 앱이 시작될 때 충돌이 발생합니다.Firebase 알림 통합이 java.lang.IncompatibleClassChangeError를 던졌습니다

Process: uk.co.stableweb.geethika, PID: 24344 
    java.lang.IncompatibleClassChangeError: com.google.firebase.auth.FirebaseAuth 
     at dalvik.system.DexFile.defineClassNative(Native Method) 
     at dalvik.system.DexFile.defineClass(DexFile.java:226) 
     at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219) 
     at dalvik.system.DexPathList.findClass(DexPathList.java:338) 
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
     at java.lang.Class.classForName(Native Method) 
     at java.lang.Class.forName(Class.java:324) 
     at java.lang.Class.forName(Class.java:285) 
     at com.google.firebase.FirebaseApp.zza(Unknown Source) 
     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
     at com.google.firebase.FirebaseApp.zzeh(Unknown Source) 
     at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) 
     at android.content.ContentProvider.attachInfo(ContentProvider.java:1748) 
     at android.content.ContentProvider.attachInfo(ContentProvider.java:1723) 
     at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 
     at android.app.ActivityThread.installProvider(ActivityThread.java:5233) 
     at android.app.ActivityThread.installContentProviders(ActivityThread.java:4828) 
     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4768) 
     at android.app.ActivityThread.access$1600(ActivityThread.java:154) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1441) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:152) 
     at android.app.ActivityThread.main(ActivityThread.java:5497) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
07-18 10:47:24.284 24344-24344/uk.co.stableweb.geethika D/AppTracker: App Event: crash 

이것은 app.grade입니다.

compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:design:23.4.0' 
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha4' 
    compile 'com.google.firebase:firebase-core:9.2.0' 
    compile 'com.google.firebase:firebase-database:9.2.0' 
    compile 'com.android.support:cardview-v7:23.4.0' 
    compile 'com.android.support:recyclerview-v7:23.4.0' 
    compile 'com.firebaseui:firebase-ui:0.4.1' 
    compile 'com.firebaseui:firebase-ui-database:0.4.1' 
    compile 'com.firebaseui:firebase-ui-auth:0.4.1' 
    compile 'org.sufficientlysecure:html-textview:1.6' 
    compile 'com.android.support:support-v4:23.4.0' 
    compile 'cn.pedant.sweetalert:library:1.3' 
    compile 'com.google.firebase:firebase-messaging:9.2.1' 

또 다른 질문으로 stackoverflow에서 누군가 인증을 사용하도록 제안했습니다. 인증을 사용하지 않더라도 익명 옵션을 사용할 수있게되었습니다.

Firebase console

그리고 구글 저장소를 업데이트 및 장치와 SDK 모두에 서비스를 재생할 수 있습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있다면 큰 도움이 될 것입니다. 고맙습니다!

+0

당신은 내 블로그를 참조 할 수 있습니다 : http://engineering.letsnurture.com/firebase-cloud-messaging/ –

+0

나는 단어로 튜토리얼을 시도했다. Firebase 메시징 버전을 9.0.2 com.google.firebase : firebase-messaging : 9.0.2로 변경했습니다. 나는 여전히 오류가 발생합니다. 그건 그렇고, 당신의 튜토리얼은 간단하고 이해하기 쉽습니다. – Isuru

+0

다음 stackoverflow 게시물을 확인하셨습니까? : http://stackoverflow.com/questions/37312340/incompatibleclasschangeerror-after-updating-to-android-build-tools-25-1-6-gcm – Mazze

답변

3

Firebase SDK는 모든 라이브러리가 동일한 버전이어야합니다.

당신이 com.google.firebase:firebase-core:9.2.0 를 사용하는 경우

는 당신은 오류가 firebase-auth 라이브러리 firebase-core 이외의 다른 버전 인에 의한 것으로 보인다 com.google.firebase:firebase-messaging:9.2.0

이 필요합니다. 하지만 당신은 당신의 gradle 파일에 firebase-auth가 없습니다. 이상합니다.

당신이 의존하고있는 다른 라이브러리가 firebase-auth를 firebase-core 가져 오기와 다른 버전으로 가져올 가능성이 있습니다. 다음 명령을

확인이 :

gradle -q app:dependencies --configuration compile