fornewid / naver-map-compose

NAVER Map Android SDK for Jetpack Compose 🗺
https://fornewid.github.io/naver-map-compose/
Apache License 2.0
115 stars 7 forks source link

rememberFusedLocationSource() 사용 시 exception 발생. #54

Closed dylan-kwon closed 8 months ago

dylan-kwon commented 1 year ago
NaverMap(
    ...
    locationSource = rememberFusedLocationSource()
)

rememberFusedLocationSource() 사용 시 IncompatibleClassChangeError exception이 발생합니다.

FATAL EXCEPTION: main
                                                                                                    Process: co.kr.onnuri.hnc.phr.dev.debug, PID: 9366
                                                                                                    java.lang.IncompatibleClassChangeError: The method 'com.google.android.gms.tasks.Task com.google.android.gms.location.FusedLocationProviderClient.requestLocationUpdates(com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationCallback, android.os.Looper)' was expected to be of type virtual but instead was found to be of type interface (declaration of 'com.naver.maps.map.compose.FusedLocationSource$FusedLocationCallback$startListening$1' appears in /data/app/co.kr.onnuri.hnc.phr.dev.debug-g5iwgxtCxF6Mgm_Mq2DmiQ==/base.apk:classes22.dex)
                                                                                                        at com.naver.maps.map.compose.FusedLocationSource$FusedLocationCallback$startListening$1.onConnected(FusedLocationSource.kt:139)
                                                                                                        at com.google.android.gms.common.internal.zak.zad(com.google.android.gms:play-services-base@@18.1.0:11)
                                                                                                        at com.google.android.gms.common.api.internal.zabe.zab(com.google.android.gms:play-services-base@@18.1.0:3)
                                                                                                        at com.google.android.gms.common.api.internal.zaaw.zaC(com.google.android.gms:play-services-base@@18.1.0:11)
                                                                                                        at com.google.android.gms.common.api.internal.zaaw.zag(com.google.android.gms:play-services-base@@18.1.0:4)
                                                                                                        at com.google.android.gms.common.api.internal.zabi.onConnected(com.google.android.gms:play-services-base@@18.1.0:2)
                                                                                                        at com.google.android.gms.common.api.internal.zat.onConnected(com.google.android.gms:play-services-base@@18.1.0:1)
                                                                                                        at com.google.android.gms.common.internal.zah.onConnected(com.google.android.gms:play-services-base@@18.1.0:1)
                                                                                                        at com.google.android.gms.common.internal.zzf.zzd(com.google.android.gms:play-services-basement@@18.1.0:10)
                                                                                                        at com.google.android.gms.common.internal.zza.zza(com.google.android.gms:play-services-basement@@18.1.0:4)
                                                                                                        at com.google.android.gms.common.internal.zzc.zze(com.google.android.gms:play-services-basement@@18.1.0:3)
                                                                                                        at com.google.android.gms.common.internal.zzb.handleMessage(com.google.android.gms:play-services-basement@@18.1.0:31)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                                        at android.os.Looper.loop(Looper.java:164)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:6944)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

play-services-location의 버전 차이로 인한 문제인 것 같습니다. 프로젝트 내에서 rememberFusedLocationSource를 카피하여 최신 버전에 맞게 수정하니 정상적으로 동작되었습니다.

fornewid commented 1 year ago

FusedLocationSource를 사용하려면 앱 모듈의 build.gradle에 play-services-location에 대한 의존성을 추가해주셔야 합니다. https://navermaps.github.io/android-map-sdk/guide-ko/4-2.html

이미 의존성이 추가되어 있다면, play-services-location 어떤 버전을 사용하시나요?

dylan-kwon commented 1 year ago

21.0.1입니다.

fornewid commented 1 year ago

@dylan-kwon compose로 전환하기 전에, 네이버지도 SDK를 바로 사용할 때는 문제 없으셨나요?

dylan-kwon commented 1 year ago

이번 프로젝트에서 xml 없이 바로 compose로 시작하여 문제가 있을지 없을지 잘 모르겠습니다.

fornewid commented 1 year ago

@dylan-kwon 그렇군요. 확인 감사합니다.

fornewid commented 8 months ago

naver-map-compose 1.5.1 버전에 구현하여 반영되었습니다. https://github.com/fornewid/naver-map-compose/releases/tag/v1.5.1


코드는 변경사항이 없구요. 새로운 naver-map-location 라이브러리를 추가 설치하면 됩니다. https://github.com/fornewid/naver-map-compose/releases/tag/v21.0.1-location

  dependencies {
-     implementation 'io.github.fornewid:naver-map-compose:1.5.0'
+     implementation 'io.github.fornewid:naver-map-compose:1.5.1'
+     implementation 'io.github.fornewid:naver-map-location:21.0.1'
  }