Android에서 프리미엄 플랜 시작하기

참고: Google Maps Platform 프리미엄 플랜은 신규 가입이 불가능하며 신규 고객에게 제공되지 않습니다.

Google Maps Platform 프리미엄 플랜 라이선스가 있으면 개선된 Android용 Maps SDK 지원을 받을 수 있습니다. 이 문서에서는 프리미엄 플랜으로 Android용 Maps SDK를 사용하는 Android 앱을 만드는 방법을 설명합니다.

개요

이 페이지의 지시에 따라 SDK를 다운로드하고, 프로젝트를 설정하고, 지도를 추가합니다. 다음은 필요한 단계를 요약한 내용입니다.

  1. SDK를 다운로드합니다.
  2. SDK를 기존 또는 새 Android 프로젝트에 추가합니다.
  3. API 키를 앱 매니페스트에 추가합니다.
  4. 필요한 Android 권한과 OpenGL ES 버전 2를 지정합니다.
  5. 지도를 추가합니다.

SDK 다운로드

SDK를 정적 라이브러리로 다운로드하거나 Android SDK Manager를 사용할 수 있습니다.

옵션 1: SDK를 정적 라이브러리로 다운로드

최신 출시 버전을 정적 라이브러리로 다운로드합니다.

옵션 2: Android SDK Manager를 사용하여 SDK 다운로드

Android 스튜디오에서:

  1. 도구 > Android > SDK Manager를 선택합니다.
  2. 모양 및 동작 > 시스템 설정 > Android SDK를 선택합니다.
  3. SDK Update Sites 탭을 클릭합니다.
  4. 더하기(+) 아이콘을 클릭하여 새 사이트를 추가합니다.
  5. 이름(예: 'Google Maps for Work')과 다음 URL을 입력합니다.
  6. 확인을 클릭합니다.
  7. SDK Tools 탭을 클릭합니다.
  8. Google Maps Mobile SDK for Work를 선택하고 확인을 클릭하여 다운로드를 완료합니다.

Android 스튜디오는 <android-sdk-folder>/extras/google/maps_for_business_sdk/에 라이브러리를 설치합니다.

Android SDK Manager를 독립 실행형 도구로 사용하는 방법은 Android SDK Manager 가이드를 참조하세요.

SDK를 프로젝트에 추가

다음은 Android 스튜디오 관련 지침입니다. 다른 도구를 사용하는 경우에는 명령줄 사용 관련 Android 문서의 지침을 참조하세요.

프리미엄 플랜 Android용 Maps SDK는 aar 번들(google-maps-sdk-m4b.aar)과 라이브러리 모듈(google-maps-sdk-m4b_lib)이라는 두 가지 형식으로 제공됩니다. 더 적절한 형식을 선택하세요.

옵션 1: aar 번들에서 SDK 가져오기

Android 스튜디오 프로젝트에 aar 번들(google-maps-sdk-m4b.aar)을 포함하려면 다음 단계를 따르세요.

  1. 다음 위치에 있는 Google Maps Platform 프리미엄 플랜을 찾습니다.

    <android-sdk>/extras/google/maps_for_business_sdk

  2. google-maps-sdk-m4b.aar 파일을 프로젝트의 libs 디렉터리에 복사합니다. (디렉터리가 없으면 새로 만듭니다.)

  3. 앱의 build.gradle 파일에 다음 코드를 추가합니다.

    dependencies {
        implementation(name:'google-maps-sdk-m4b', ext:'aar')
        implementation 'com.android.support:support-v4:+'
        implementation 'com.android.support:appcompat-v7:+'
        implementation 'com.google.android.gms:play-services-basement:15.0.1'
        implementation 'com.google.android.gms:play-services-base:15.0.1'
    }
    
    repositories {
        flatDir{
            dirs 'libs'
        }
    }
    
  4. 앱의 build.gradle 파일에서 compileSdkVersion을 최신 버전으로 설정합니다.

  5. 아래에 설명된 대로 구성 단계를 완료합니다.

옵션 2: SDK를 라이브러리 모듈로 가져오기

aar 파일을 사용하는 대신 다음 단계에 따라 Android 스튜디오의 기존 프로젝트에 SDK 라이브러리 모듈(google-maps-sdk-m4b_lib)을 추가해도 됩니다.

  1. Android 스튜디오에서 새 모듈을 가져오는 옵션을 선택합니다(파일 -> 신규 -> 모듈 가져오기).
  2. 다음 위치의 SDK로 이동합니다:

    <android-sdk>/extras/google/maps_for_business_sdk

  3. google-maps-sdk-m4b_lib 디렉터리를 선택하고 선택을 클릭합니다.

  4. 가져오기 마법사에서 기본값을 수락합니다.

  5. 마침을 클릭합니다. 가져오기 프로세스의 결과를 요약한 텍스트 파일이 표시됩니다.

  6. 라이브러리가 settings.gradle 파일에 포함되어 있는지 확인합니다.

    include ':googlemapssdkm4b_lib'

  7. 앱의 build.gradle 파일에 다음 코드를 추가합니다.

    dependencies {
        implementation project(':googlemapssdkm4b_lib')
        implementation 'com.android.support:support-v4:+'
        implementation 'com.android.support:appcompat-v7:+'
        implementation 'com.google.android.gms:play-services-basement:15.0.1'
        implementation 'com.google.android.gms:play-services-base:15.0.1'
    }
    
  8. 앱의 build.gradle 파일에서 compileSdkVersion을 최신 버전으로 설정합니다.

Google Play 서비스를 사용하는 기존 구성 변환

  1. Google Play 서비스를 사용하는 기존 앱이 있는 경우 com.google.android.gms.maps 패키지에 대한 모든 참조를 com.google.android.m4b.maps로 바꿉니다.
  2. XML 레이아웃 속성에 관한 모든 참조에 m4b_ 접두사를 추가합니다. 예를 들면 m4b_mapTypem4b_cameraZoom입니다.

앱 매니페스트에서 설정 지정

Android용 Maps SDK를 사용하는 Android 앱은 매니페스트 파일인 AndroidManifest.xml에서 다음 설정을 지정해야 합니다.

API 키

프로젝트의 API 키를 생성하고 인증 가이드의 설명을 참조하여 키를 AndroidManifest.xml에 추가합니다.

권한

<uses-permission> 요소를 AndroidManifest.xml<manifest> 요소의 하위 요소로 추가하여 애플리케이션에 필요한 권한을 지정합니다.

위치 정보 액세스 권한

애플리케이션에서 내 위치 레이어를 사용 설정하여 사용자의 현재 위치에 액세스하는 경우 위치 데이터 가이드에 설명된 대로 위치 정보 액세스 권한을 요청해야 합니다.

외부 저장소 권한

Google Play 서비스 SDK 버전 8.3 이상을 타겟팅하는 경우 더 이상 Maps SDK for Android를 사용하기 위해 WRITE_EXTERNAL_STORAGE 권한이 필요하지 않습니다.

Google Play 서비스 SDK의 이전 버전을 타겟팅하는 경우 android.permission.WRITE_EXTERNAL_STORAGE 권한을 요청해야 합니다.

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

참고: 앱에서 런타임 권한을 사용해야 하는 API 수준 23(Android 6.0)을 타겟팅하는 경우 Google Play 서비스 SDK의 버전 8.3 이상을 타겟팅해야 합니다.

매니페스트에 자동으로 병합되는 권한

다음 권한은 Google Play 서비스 매니페스트에 정의되어 있으며 빌드 시 앱 매니페스트에 자동으로 병합됩니다. 매니페스트에 명시적으로 추가할 필요가 없습니다.

OpenGL ES 버전 2

Android용 Maps SDK에서는 OpenGL ES 버전 2를 사용하여 지도를 렌더링합니다. 다음 설정은 Google Play 서비스 매니페스트에 정의되어 있으며 빌드 시 앱 매니페스트에 자동으로 병합됩니다. 매니페스트에 명시적으로 추가할 필요가 없습니다.

<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

이렇게 하면 외부 서비스에 요구사항이 전달됩니다. 특히 Google Play 스토어에서 OpenGL ES 버전 2를 지원하지 않는 기기에 앱이 표시되지 않게 합니다.

지도 추가

앱이 올바르게 구성되어 있는지 테스트하는 가장 쉬운 방법은 간단한 지도를 추가하는 것입니다.

  1. activity_main.xml에서 다음 프래그먼트를 추가합니다.

    <?xml version="1.0" encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/map"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:name="com.google.android.m4b.maps.MapFragment"/>
    
  2. MainActivity.java에서 다음 코드를 추가합니다.

    package com.example.mapdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    

앱 빌드 및 실행

앱을 빌드하고 실행합니다. 지도가 표시됩니다.

문제해결:

  • 지도가 표시되지 않는 경우 이 문서의 앞부분에 나오는 모든 단계를 완료했는지 확인하세요. 특히 API 키가 올바르고 계정이 Google Maps Platform 프리미엄 플랜 서비스에서 사용 설정되었는지 확인해야 합니다.

  • 프로젝트의 메서드 수가 한도를 넘으면 오류가 발생할 수 있습니다.

    Unable to execute dex: method ID not in [0, 0xffff]: 65536

    원인 및 해결책에 대한 자세한 내용은 메서드 65,000개 이상을 사용하여 앱 빌드하는 방법에 관한 Android 개발자 가이드를 참조하세요.

  • 프로젝트가 이미 Guava에 종속된 경우 다음과 같은 클래스 충돌 오류가 발생할 수 있습니다.

    com.android.dex.DexException: Multiple dex files define Lcom/google/common/annotations/Beta

    이 문제를 해결하려면 google-maps-sdk-m4b_lib/libs 디렉터리에서 Guava 복사본을 삭제해야 합니다.

추가 정보

기존 앱을 마이그레이션하는 방법

프리미엄 플랜으로 사용할 수 있는 Android API는 표준 Android용 Maps SDK와 매우 유사하게 설계됩니다. 따라서 마이그레이션 절차도 아주 간단합니다.

  1. 프리미엄 플랜 Android용 Maps SDK를 다운로드한 후 위의 설명을 참조하여 SDK를 프로젝트에 추가합니다.
  2. com.google.android.gms.maps 패키지에 대한 모든 참조를 com.google.android.m4b.maps로 바꿉니다.
  3. XML 레이아웃 속성에 관한 모든 참조에 m4b_ 접두사를 추가합니다. 예를 들면 m4b_mapTypem4b_cameraZoom입니다.
  4. 프로젝트의 새 API 키를 생성하고 인증 가이드의 설명을 참조하여 AndroidManifest.xml에 키를 추가합니다.
  5. 앱을 빌드합니다.

버전 비교

다음 표에서는 표준 Android용 Maps SDK 사용과 프리미엄 플랜 API 사용의 주요 차이점이 나와 있습니다.

  표준 Android용 Maps SDK 프리미엄 플랜
패키지 이름 com.google.android.gms.maps com.google.android.m4b.maps
레이아웃 파일의 XML 속성 접두사 없는 속성 이름을 사용합니다. 예를 들면 mapType입니다. 모든 속성 이름 앞에 m4b_ 접두사를 붙입니다. 예를 들면 m4b_mapType입니다. 자세한 내용은 XML 속성 문서를 참조하세요.
다운로드 위치 Google Play 서비스에 포함됩니다. 정적 라이브러리로 제공됩니다.
지원 채널 커뮤니티 기반 지원 프리미엄 지원에 액세스
약관 Google Maps Platform 서비스 약관이 적용됩니다. Google Maps Platform 프리미엄 플랜 약관이 적용됩니다.

Google Play 서비스

표준 Android용 Maps SDK를 사용하려면 Google Play 서비스 APK와 Google Play 서비스 maps 클라이언트 라이브러리(com.google.android.gms:play-services-maps)가 모두 필요합니다. 그러나 Google Maps Platform 프리미엄 플랜과 함께 사용할 경우 Google Play 서비스 APK가 대상 기기에 설치되는 것이 SDK의 유일한 요구사항이므로 maps 클라이언트 라이브러리는 필요 없습니다.

애플리케이션을 프리미엄 플랜으로 마이그레이션할 때는 maps 클라이언트 라이브러리와 com.google.android.gms.maps 패키지에 대한 모든 참조를 프로젝트에서 삭제해야 합니다. 지도에 액세스하려면 프리미엄 플랜 SDK(com.google.android.m4b.maps 패키지)만 사용해야 합니다.

다른 Google Play 서비스 클라이언트 라이브러리를 포함하여 Google 애널리틱스나 Google 위치 정보 및 활동 감지 같은 다른 Google API를 활용할 수도 있습니다.

샘플 코드

GitHub의 Google 지도 저장소에는 Android 앱에서 Android용 Maps SDK를 사용하는 방법을 보여주는 여러 샘플이 있습니다. 샘플 앱에서는 프리미엄 플랜으로 사용하는 com.google.android.m4b.maps가 아닌 com.google.android.gms.maps 패키지를 사용합니다. 또한 샘플 앱에서는 데모 일부분에서 Location API를 사용하므로 Google Play 서비스 SDK도 필요합니다.

또한 개발자 가이드의 각 페이지에 코드 스니펫이 있습니다.

관련 자료

Google Maps Platform 프리미엄 플랜 관련 정보는 Google 사이트 전역에서 사용할 수 있는 개발자 가이드 및 참조 문서에서 확인할 수 있습니다.