2023. 5. 24. 16:13ㆍ_Study/AndroidStudio
프로젝트를 하면서 네이버지도 API를 불러왔더니
사실 카카오맵을 사용한다고 해서,,, 카카오맵을 불러와야한다.
문제는 내가 멍청한건지 최근 글을 다 찾아봐도 적용이 안 되길래
버전문제인지 싶다...! !
나같은 사람이라 쓰고 내가 분명 다른 프젝에 카카오맵 써야할 일이 있을테니 사용법을 남겨본다.
는 실제 핸드폰이 필요하다. 아예 안뜬다.
1. 카카오 개발자 사이트 가입하기
내 애플리케이션에 추가한다.
그러고 나서 플랫폼 - 카카오맵이 필요한 앱을 추가한다
여기서 패키지는 지금 사용하는 패키지의 이름
키 해시는 함수를 통해 알아내야한다
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()는 안된다.
눌러서 불러오니까 뭔가 분기점이 생긴듯하다
알고보니 에뮬레이터에 회색화면으로 뜬다고하는데 아예 안뜨나보다.
실제 핸드폰을 들고와서 에뮬레이터를 연결해본다.
는 바로 종료된다.
는 네트워크 연결해주고!!!! 니까 된다!!!!
'_Study > AndroidStudio' 카테고리의 다른 글
[카카오맵 API] 안드로이드 코틀린 현재 실제 위치를 마커표시하기 (2) | 2023.05.25 |
---|---|
프래그먼트 – 액티비티처럼 동작하는 뷰 (0) | 2022.12.08 |
제트팩 라이브러리 안드로이드 스튜디오 appcompat 라이브러리 (0) | 2022.12.08 |
seekbar을 이용한 음악재생 #시크바 코틀린 (0) | 2022.12.07 |
소리와 진동 알림, 알림 띄우기 안드로이드 스튜디오 (1) | 2022.12.07 |