반응형

프로젝트에서 사용할 것 같은 네이버 지도를 사용하려하는데 공식문서를 나름 따라한다고 따라했었는데 오류가 계속 발생해서... 겨우 해결하고 정리하는 차원에서 글을 작성합니다.

 참고한 공식문서는 여기

클라이언트 ID 발급받기

 우선 네이버 클라우드 플랫폼에 가셔서 회원가입 / 로그인을 하고 콘솔로 이동하여 줍니다. 

 Application버튼을 누르고 Application을 먼저 등록해보겠습니다.

 가장 위에서 앱을 식별할 이름을 작성해준 후 사용할 서비스들을 체크하고 하단에서 패키지 이름을 작성하고 등록을 해줍니다.

 

 그러면 콘솔창에서 이렇게 등록이 된 것을 확인할 수 있습니다.

인증 정보를 누르면 나중에 필요한 클라이언트 아이디를 확인할 수 있습니다.

의존성 추가

네이버의 공식 문서에 의하면 루트 프로젝트의 build.gradle에 저런식으로 maven 저장소를 추가하라고 나옵니다.

제가 사용하고 있는 안드로이드 스튜디오 버전인 Bumblebee // 2021.1.1에서는 루트 프로젝트의 build.gradle이 공식문서와 다르게 생겼습니다.

요런식으로 allprojects{} 가 없습니다. 

setting.gradle (Project Setting)에 입력해주어야 합니다.

setting.gradle (Project Setting)에서 dependencyResolutionManagement 안에 

    	jcenter()
        maven {
            url 'https://naver.jfrog.io/artifactory/maven/'
        }

 이 코드들을 넣어주시면 됩니다.

 

그리고 나서 앱 모듈의 build.gradle에 SDK 의존성을 선언해줍니다.

이런식으로 build.gradle(Module: 프로젝트이름.app)에 

    // 네이버 지도 SDK
    implementation 'com.naver.maps:map-sdk:3.14.0'

를 추가해주시면 됩니다. 

 gradle 설정이 끝났다면 우측 상단에 있는 Sync Now를 눌러 적용시켜줍니다.

클라이언트 ID 지정

가장 먼저 네이버 클라우드 플랫폼에서 받은 클라이언트 ID를 SDK에 지정해주어야 합니다. 

공식문서에는 2가지 방법을 설명해주었지만 조금 더 간편한 첫번째 방법으로 해보겠습니다.

위의 사진과 같이 AndroidManifest에가서 <application></application> 사이에 

            <meta-data
            android:name="com.naver.maps.map.CLIENT_ID"
            android:value="YOUR_CLIENT_ID_HERE" />

이 부분을 넣어줍니다. 여기서 android:value= "" 에 있는 큰 따옴표 쌍 안에는 반드시 아까 위에서 발급 받은 본인의 클라이언트 ID를 넣어주셔야합니다.

오류 발생

그후 앱을 실행시켜보면

Caused by: java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs

에러가 발생합니다.

AndroidManifest로 가서

아래에 있는 Merged Manifest를 눌러 오류 내용을 확인해보았습니다.

 

Merging Errors: Warning Package name 'android.support.graphics.drawable' used in: AndroidManifest.xml, AndroidManifest.xml. animated-vector-drawable:28.0.0 manifest Warning Package name 'androidx.versionedparcelable' used in: AndroidManifest.xml, AndroidManifest.xml. support:versionedparcelable:28.0.0 manifest Error: Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from AndroidManifest.xml:22:18-91 is also present at AndroidManifest.xml:24:18-86 value=(androidx.core.app.CoreComponentFactory). Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-21:19 to override. mapTest.app main manifest (this file), line 21

 

라는 내용의 에러인데 AndroidX enable을 true로 해주지 않아 발생하는오류입니다.

gradle.properties(Project Properties) 에 가서

android.useAndroidX=true
android.enableJetifier=true

이 두 줄을 추가해주시면 됩니다. 저는 android.useAndroidX=true 는 이미 있어서 아래에 android.enableJetifier=true 한 줄만 작성해주었습니다.

 그러면 정상적으로 앱이 빌드가 됩니다!

지도 표기

마지막으로 공식문서에 나와있는대로 xml 파일에 저렇게 작성하고 앱을 빌드해보겠습니다.

네이버 지도가 짜잔,,,!

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기