괴발개발

[android project] 안드로이드에 카카오맵api 적용 본문

으이구 지겨워/android project

[android project] 안드로이드에 카카오맵api 적용

yousim 2021. 11. 9. 15:57

개빡치지만 각설하고 시작

카카오맵 api 가이드 사이트

를 중점으로 설명하지만, 안드로이드 초보가 하기엔 이게 뭔 개소리야 싶을것이기에, 내가 적는다

 

 

1. 카카오 개발자 사이트에 들어간다. 

https://developers.kakao.com/

시작하기 클릭

 

2. 

애플리케이션 추가하기 클릭

 

3.

본인이 진행 할 프로젝트 정보를 적고 저장을 누른다. 

 

4. 

저장한 애플리케이션을 클릭한다. 그리고 플랫폼에 들어가면 

내 사진은 수정이라 나와있지만, 처음 진행할 시 해당 창이 플랫폼 등록이라고 뜬다. 

패키지명을 입력한다. * AndroidMainfest의 package명을 그대로 복사하여 넣으면 된다.

마켓에 아직 출시하지 않은 경우 없음을 선택한다. 

키 해시는 안드로이드 스튜디오에서 코드입력으로 쉽게 얻을 수 있다. ( 링크 ) 

 

5.  다 진행 되었으면, 요약정보에 간다. 

 

안드로이드이므로, 네이티브 앱 키를 복사한다. 

 

6. https://apis.map.kakao.com/android/guide/

에 들어가 sdk를 다운받는다. 

다운받은 파일의 libs에 들어가면, 

이 나온다. 

app>libs>libDaumMapAndroid.jar 경로로 jar을 넣고. 

app>src>main>jnLibs 경로로 (이때 jnLibs는 직접 만들어야함 - 난 또 따로 다운 받아야하나 해서 존나 찾아다녔다)

arm....3개 디렉토리 파일을 만들고, 아래 사진과 같은 경로로 넣어준다. 

 

 

7. build.gradle(:app) 에 들어가, dependencies에 

 

implementation files('libs/libDaumMapAndroid.jar') 를 입력한다. 

 

8. 안드로이드 res에 xml형태로 network_security_config 를 생성한다.

그리고 해당 코드를 입력한다. 

 

9.  Mainfest에 각각 코드를 추가로 집어넣는다. 

 

(1). 인터넷과 위치권한에 대한 코드 ( < application  앞에 넣는다. )


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

 

(2). 이미지를 불러오는데 http통신 허용( < application  안에 넣는다. )

 

android:usesCleartextTraffic="true"

 

>>>이거 안 하면 나중에 


D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
W/libEGL: EGLNativeWindowType 0x6f62113010 disconnect failed

이런 오류난다. 

 

(3). 메타 데이터 ( 아까 복사한 네이티브 앱 키)

 

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

 

를 넣는다. 위치는 activity밖, application안이다. ( 그냥 application안에서만 하면 되는 듯 )

 

 

10. 

LinearLayout 안에

<RelativeLayout
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent">

activity_main.xml

MainActivity에서는 

import net.daum.mf.map.api.MapView

를 해주고, 

 

oncreate()안에 

 

MapView mapView = new MapView(this);

ViewGroup mapViewContainer = (ViewGroup) findViewById(R.id.map_view);
mapViewContainer.addView(mapView);

 

를 입력한다.

 

MainActivity.java

 

11. 끝. 돌려본다. 그래도 회색화면이 나오거나 오류가 뜬 다면, 

 

1. jar가 잘 실행되었나? 

2. 혹시 코드의 위치/철자를 잘못 기입하여넣었나?

3. 해시 키, meta-data의 값이 확실한가?

 

를 다시 살펴보길. 

1같은 경우는 안드로이드 스튜디오에서

file > Project Structure > + 버튼 (All Dependencies)

에서 jar를 추가한다. 

나 같은 경우 libs/libDaumMapAnroid.jar의 이름으로 추가하여, 해당 jar에 의존성을 걸어주었다. 

 

 

이후 ok!

 

 

 

 이렇게 진행했는데 안 되면 댓글 주세요