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

Google Maps API 프리미엄 플랜 라이선스는 Google Maps Android API에 대해 향상된 지원을 제공합니다. 이 문서에서는 Google Maps Android API와 프리미엄 플랜를 함께 사용하는 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 Studio에서:

  1. Tools > Android > SDK Manager를 선택합니다.
  2. Appearance & Behavior > System Settings > Android SDK를 선택합니다.
  3. SDK Update Sites 탭을 클릭합니다.
  4. plus (+) 아이콘을 클릭하여 새 사이트를 추가합니다.
  5. 이름(예: 'Google Maps for Work')과 다음 URL을 입력합니다: https://dl.google.com/geosdk/android-m4b-addon.xml
  6. OK를 클릭합니다.
  7. SDK Tools 탭을 클릭합니다.
  8. Google Maps Mobile SDK for Work를 선택하고 OK를 클릭하여 다운로드를 완료합니다.

Android Studio가 <android-sdk-folder>/extras/google/maps_for_business_sdk/에 라이브러리를 설치합니다.

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

프로젝트에 SDK 추가

다음은 Android Studio 관련 설명입니다. 다른 도구를 사용 중인 경우에는 Android 문서에서 명령줄 사용에 대한 설명을 참조하세요.

프리미엄 플랜용 Google Maps Android API는 aar 번들(google-maps-sdk-m4b.aar) 및 라이브러리 모듈(google-maps-sdk-m4b_lib)의 두 가지 형식으로 제공됩니다. 가장 적합한 형식을 선택할 수 있습니다.

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

다음 단계에 따라 aar 번들(google-maps-sdk-m4b.aar)을 Android Studio 프로젝트에 포함시킵니다.

  1. 다음 위치의 Google Maps API 프리미엄 플랜로 이동합니다:

    <android-sdk>/extras/google/maps_for_business_sdk

  2. google-maps-sdk-m4b.aar 파일을 프로젝트의 libs 디렉토리에 복사합니다. (없는 경우 디렉토리를 만듭니다.)

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

    dependencies {
        compile(name:'google-maps-sdk-m4b', ext:'aar')
    
    }
    
    repositories {
        flatDir{
            dirs 'libs'
        }
    }
    
  4. 아래 설명된 구성 단계를 완료합니다.

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

aar 파일을 사용하는 대신, 아래 단계에 따라 SDK 라이브러리 모듈(google-maps-sdk-m4b_lib)을 Android Studio의 기존 프로젝트에 추가합니다.

  1. Android Studio에서, 새 모듈을 가져오기 위한 옵션을 선택합니다(File -> New -> Import Module).
  2. 다음 위치의 SDK로 이동합니다:

    <android-sdk>/extras/google/maps_for_business_sdk

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

  4. 가져오기 마법사에서 기본값을 수락합니다.
  5. Finish를 클릭합니다. 가져오기 절차의 결과를 요약한 텍스트 파일이 나타납니다.
  6. 라이브러리가 settings.gradle 파일에 포함되었는지 확인합니다.

    include ':googlemapssdkm4b_lib'

  7. 앱의 build.gradle 파일에 모듈 종속성을 추가합니다.

    compile project(':googlemapssdkm4b_lib')

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

  1. Google Play 서비스를 사용하는 기존 앱이 있는 경우, com.google.android.gms.maps 패키지에 대한 모든 참조를 com.google.android.m4b.maps로 대체합니다.
  2. XML 레이아웃 특성에 대한 모든 참조에 m4b_ 접두사를 붙입니다. 예: m4b_mapTypem4b_cameraZoom.

앱 매니페스트에 설정 지정

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

API 키

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

권한

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

위치 권한

애플리케이션이 My Location 계층을 활성화하여 사용자의 현재 위치에 액세스하면 위치 데이터 가이드에 설명된 위치 권한을 요청해야 합니다.

외부 저장소 권한:

Google Play 서비스 SDK 버전 8.3 이상이 대상이라면, 이제 Google Maps Android API를 사용하기 위해 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

Google Maps Android API는 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 API 프리미엄 플랜 서비스를 위해 계정이 활성화되었는지 확인하세요.

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

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

원인 및 해결책에 대한 자세한 내용은 65K 이상의 메서드를 사용하여 앱 빌드 Android 개발자 가이드를 참조하세요.

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

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

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

추가 정보

기존 앱의 마이그레이션 방법

프리미엄 플랜에서 사용 가능한 Android API는 표준 Google Maps Android API와 매우 유사하게 디자인되었습니다. 따라서 마이그레이션 절차도 아주 간단합니다.

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

버전 비교

T다음 표에서는 표준 Google Maps Android API 사용 시와 프리미엄 플랜를 포함한 API 사용 시의 주요 차이점에 대해 설명합니다.

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

Google Play 서비스

표준 Google Maps Android API는 Google Play 서비스 APK 및 Google Play 서비스 클라이언트 라이브러리가 모두 필요합니다. 그러나 Google Maps API 프리미엄 플랜와 사용할 경우 SDK는 Google Play 서비스 APK만 대상 기기에 설치하도록 요구하며, 클라이언트 라이브러리는 설치할 필요가 없습니다.

애플리케이션을 프리미엄 플랜로 마이그레이션할 때, Google Play 서비스 SDK를 프로젝트에서 제거할 필요가 없습니다. 그러나 com.google.android.gms.maps 패키지에 대한 모든 참조는 제거해야 합니다. Google Play 서비스에는 Google Maps Android API 버전 뿐만 아니라 기타 Google 서비스도 포함되어 있습니다. 여러분의 앱 내에서 다른 Google API를 사용하기 위해 Google Play 서비스를 사용하는 경우, 프리미엄 플랜 SDK( com.google.android.m4b.maps 패키지)만 사용하여 지도에 액세스하도록 하세요.

Google Play 서비스 클라이언트 라이브러리는 필수는 아니지만, 이 라이브러리를 포함시키면 Google+ 또는 Location API와 같은 다른 Google API를 활용할 수 있으므로 유용한 라이브러리입니다.

샘플 코드

Github의 Google Maps 리포지토리에는 Android 앱에서 Google Maps Android API를 사용하는 방법을 보여주는 여러 가지 샘플이 포함되어 있습니다. 참고로, 이 샘플 앱에서는 com.google.android.gms.maps 패키지를 사용합니다(프리미엄 플랜에서 사용되는 com.google.android.m4b.maps 대신). 데모의 일부분에 Location API가 사용되기 때문에, 이 샘플 앱에는 또한 Google Play 서비스 SDK가 필요합니다.

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

문서

Google Maps API 프리미엄 플랜에 대한 자세한 내용은 이 사이트에서 제공하는 개발자 및 참조 문서를 참조하십시오.