[카카오맵 API] 안드로이드 코틀린 카카오맵 불러오기 초기세팅 (22.01.01 전기뱀장어 버젼)

2023. 5. 24. 16:13_Study/AndroidStudio

728x90

 
프로젝트를 하면서 네이버지도 API를 불러왔더니
사실 카카오맵을 사용한다고 해서,,, 카카오맵을 불러와야한다.
 
문제는 내가 멍청한건지 최근 글을 다 찾아봐도 적용이 안 되길래
버전문제인지 싶다...! ! 
 
나같은 사람이라 쓰고 내가 분명 다른 프젝에 카카오맵 써야할 일이 있을테니 사용법을 남겨본다.
 

실제 핸드폰이 필요하다. 아예 안뜬다.

 


 
 


1. 카카오 개발자 사이트 가입하기

 
https://developers.kakao.com/

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 
내 애플리케이션에 추가한다.
 

 
그러고 나서 플랫폼 - 카카오맵이 필요한 앱을 추가한다

 
여기서 패키지는 지금 사용하는 패키지의 이름
키 해시는 함수를 통해 알아내야한다
 

fun getKakaoMapHashKey(context: Context) {
            try {
                val packageName = context.packageName
                val packageInfo = context.packageManager.getPackageInfo(
                    packageName,
                    PackageManager.GET_SIGNATURES
                )
                for (signature in packageInfo.signatures) {
                    val md = MessageDigest.getInstance("SHA")
                    md.update(signature.toByteArray())
                    val hashKey = Base64.encodeToString(md.digest(), Base64.NO_WRAP)
                    Log.d("KakaoMap Hash Key", hashKey)
                }
            } catch (e: Exception) {
                Log.e("KakaoMap Hash Key", "Error: ${e.message}")
            }
        }

        getKakaoMapHashKey(this)

 
해당 함수를 실행하면 안드로이드 스튜디오 하단의 Logcat에 KakaoMap Hash Key 라고 검색하면 해시키가 나온다.

 
알아낸 해시키를 넣어주고 네이티브 앱 키를 알아내야하는 데

 
네이티브 앱 키를 복사해둔다.
 


2. 카카오 SDK 복사 / 종속성 작업하기

공식문서를 읽어보라고 하지만 역시나 (나에게) 문제가 있다
https://apis.map.kakao.com/android/guide/
 
SDK 파일 받아준다

여기 사진 말고 웹페이지에서 누르기

우리는 네이티브 앱 키 발급 및 키 해시 등록하기 까지 했다
 
프로젝트로 바꿔주고

 
파일을 다운받아서 libs에 들어가면 요러하다.
libDaumMapAndroid.jar 은 libs에 복사를 해주고
나머지 3개는 main - jniLibs를 폴더를 만들어서 복사해준다.
 

 

이러한 모양으로

 
 
그러고 AndroidManifest.xml에 권한 부여해준다.
 
application 위에 권한을 넣어준다.

<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>

 
네이티브 앱 키  넣어준다.

<meta-data android:name="com.kakao.sdk.AppKey" android:value="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"/>

 
어라 왜 앱키가 2개나 있지  .. ? 이게 문젠가 싶기도 하고 갑자기 권한 요청을 한다.
 
아무튼 아무튼 진짜 이제 MapView 객체만 가져오면 띄울 수 있다
 
이거 추가해주고

import net.daum.mf.map.api.MapView
    <RelativeLayout
        android:id="@+id/map_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
        val mapView = MapView(this)
        val mapViewContainer = binding.mapView as ViewGroup
        mapViewContainer.addView(mapView)

 
망할 뷰 바인딩이후로 뭔가 이상해졌다. 이게 뷰바인딩 문제는 아닌거 같아서 일단 오류 분석

 

 
요즘 챗지피티도 믿을게 못된다 암튼 종속성 추가 빠진건 OK 일단 DaumMapEngineApi.so를 못찾는 다고 한다.
하지만 나는

implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/libDaumMapAndroid.jar')

이게 이미 build.gradle에 있다.... 여기서부터 버전차이로 compile()는 안된다.

 
 
눌러서 불러오니까 뭔가 분기점이 생긴듯하다

 
알고보니 에뮬레이터에 회색화면으로 뜬다고하는데 아예 안뜨나보다.
실제 핸드폰을 들고와서 에뮬레이터를 연결해본다.
 
는 바로 종료된다.
 는 네트워크 연결해주고!!!! 니까 된다!!!!