이 페이지에서는 개발 프로젝트에 Navigation SDK를 통합하는 방법을 설명합니다.
프로젝트에 Navigation SDK 추가
Navigation SDK는 Google
Maven
Repository를 통해 사용할 수 있습니다.
Gradle build.gradle 또는 Maven pom.xml 구성을 사용하여 프로젝트에 SDK를 추가할 수 있습니다.
Gradle 또는 Maven 구성에 다음 종속 항목을 추가하고
VERSION_NUMBER자리표시자를 원하는 Android용 Navigation SDK 버전으로 대체합니다.Gradle
모듈 수준
build.gradle에 다음을 추가합니다.dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER' }Maven
pom.xml에 다음을 추가합니다.<dependencies> ... <dependency> <groupId>com.google.android.libraries.navigation</groupId> <artifactId>navigation</artifactId> <version>VERSION_NUMBER</version> </dependency> </dependencies>Maps SDK를 사용하는 종속 항목이 있는 경우 Maps SDK에 종속된 각 선언된 종속 항목에서 종속 항목을 제외해야 합니다.
Gradle
최상위 수준
build.gradle에 다음을 추가합니다.allprojects { ... // Required: you must exclude the Google Play service Maps SDK from // your transitive dependencies to make sure there won't be // multiple copies of Google Maps SDK in your binary, as the Navigation // SDK already bundles the Google Maps SDK. configurations { implementation { exclude group: 'com.google.android.gms', module: 'play-services-maps' } } }Maven
pom.xml에 다음을 추가합니다.<dependencies> <dependency> <groupId>project.that.brings.in.maps</groupId> <artifactId>MapsConsumer</artifactId> <version>1.0</version> <exclusions> <!-- Navigation SDK already bundles Maps SDK. You must exclude it to prevent duplication--> <exclusion> <!-- declare the exclusion here --> <groupId>com.google.android.gms</groupId> <artifactId>play-services-maps</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
빌드 구성
프로젝트를 만든 후 성공적인 빌드 및 Navigation SDK 사용을 위한 설정을 구성할 수 있습니다.
로컬 속성 업데이트
- Gradle Scripts 폴더에서
local.properties파일을 열고android.useDeprecatedNdk=true를 추가합니다.
Gradle 빌드 스크립트 업데이트
build.gradle (Module:app)파일을 열고 다음 가이드라인에 따라 Navigation SDK 요구사항을 충족하도록 설정을 업데이트하고 최적화 옵션도 설정하는 것이 좋습니다.Navigation SDK에 필요한 설정
minSdkVersion을 24 이상으로 설정합니다.targetSdkVersion을 36 이상으로 설정합니다.javaMaxHeapSize를 늘리는dexOptions설정을 추가합니다.- 추가 라이브러리의 위치를 설정합니다.
- Navigation SDK의
repositories및dependencies를 추가합니다. - 종속 항목의 버전 번호를 사용 가능한 최신 버전으로 바꿉니다.
빌드 시간을 줄이는 선택적 설정
- 코드 축소 및 리소스 축소 를 사용하여 R8/ProGuard를 사용 설정하여 종속 항목에서 사용하지 않는 코드와 리소스를 삭제합니다. R8/ProGuard 단계가 실행하는 데 너무 오래 걸리는 경우 개발 작업을 위해 multidex를 사용 설정하는 것이 좋습니다.
- 빌드에 포함된 언어 번역 수를 줄입니다. 개발 중에 한 언어의
resConfigs를 설정합니다. 최종 빌드의 경우 실제로 사용하는 언어의resConfigs를 설정합니다. 기본적으로 Gradle에는 Navigation SDK에서 지원하는 모든 언어의 리소스 문자열이 포함됩니다.
Java8 지원을 위한 디슈가링 추가
- Android Gradle 플러그인 4.0.0 이상을 사용하여 앱을 빌드하고 있다면 이 플러그인은 다양한 Java 8 언어 API를 사용할 수 있도록 지원을 확대합니다. 자세한 내용은 Java 8 디슈가링 지원 을 참고하세요. 컴파일 및 종속 항목 옵션은 아래의 빌드 스크립트 스니펫 예를 참고하세요.
- Android 버전 7.3.0 이상에서는 Gradle 8.11.1, Android Gradle 플러그인 버전 8.10.0, 디슈가링 라이브러리
com.android.tools:desugar_jdk_libs_nio:2.0.3을 사용해야 합니다. - 디슈가링 라이브러리는
app모듈과 Navigation SDK에 직접 종속된 모든 모듈에 사용 설정해야 합니다.
아래는 애플리케이션의 Gradle 빌드 스크립트 예입니다. 사용 중인 Navigation SDK 버전이 이 문서보다 약간 앞서거나 뒤처질 수 있으므로 업데이트된 종속 항목 세트는 샘플 앱을 확인하세요.
apply plugin: 'com.android.application'
ext {
navSdk = "__NAVSDK_VERSION__"
}
android {
compileSdk 33
buildToolsVersion='28.0.3'
defaultConfig {
applicationId "<your id>"
// Navigation SDK supports SDK 23 and later.
minSdkVersion 23
targetSdkVersion 34
versionCode 1
versionName "1.0"
// Set this to the languages you actually use, otherwise you'll include resource strings
// for all languages supported by the Navigation SDK.
resConfigs "en"
multiDexEnabled true
}
dexOptions {
// This increases the amount of memory available to the dexer. This is required to build
// apps using the Navigation SDK.
javaMaxHeapSize "4g"
}
buildTypes {
// Run ProGuard. Note that the Navigation SDK includes its own ProGuard configuration.
// The configuration is included transitively by depending on the Navigation SDK.
// If the ProGuard step takes too long, consider enabling multidex for development work
// instead.
all {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
// Navigation SDK for Android and other libraries are hosted on Google's Maven repository.
google()
}
dependencies {
// Include the Google Navigation SDK.
// Note: remember to exclude Google Play service Maps SDK from your transitive
// dependencies to avoid duplicate copies of the Google Maps SDK.
api "com.google.android.libraries.navigation:navigation:${navSdk}"
// Declare other dependencies for your app here.
annotationProcessor "androidx.annotation:annotation:1.7.0"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
}
앱에 API 키 추가
이 섹션에서는 앱이 더욱 안전하게 참조할 수 있도록 API 키를 저장하는 방법을 설명합니다. API 키는 버전 제어 시스템에 체크인하면 안 되며, 프로젝트의 루트 디렉터리에 있는 secrets.properties 파일에 저장하는 것이 좋습니다. secrets.properties 파일에 관한 자세한 내용은
Gradle 속성 파일을 참고하세요.
이 작업을 간소화하려면 Android용 Secrets Gradle 플러그인을 사용하는 것이 좋습니다.
Android용 Secrets Gradle 플러그인을 설치하고 API 키를 저장하려면 다음 단계를 따르세요.
-
Android 스튜디오에서 루트 수준
build.gradle파일을 열고 다음 코드를dependencies아래의buildscript요소에 추가합니다.Groovy
buildscript { dependencies { // ... classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
Kotlin
buildscript { dependencies { // ... classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
-
앱 수준
build.gradle파일을 열고 다음 코드를plugins요소에 추가합니다.Groovy
plugins { id 'com.android.application' // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
Kotlin
plugins { id("com.android.application") // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
- Android 스튜디오를 사용하는 경우 프로젝트를 Gradle과 동기화합니다.
-
프로젝트 수준 디렉터리에서
local.properties를 열고 다음 코드를 추가합니다YOUR_API_KEY를 API 키로 바꿉니다.MAPS_API_KEY=YOUR_API_KEY
-
API 키를
AndroidManifest.xml파일에 추가하거나 프로그래매틱 방식으로 API 키를 제공할 수 있습니다.AndroidManifest.xml에 API 키를 추가합니다.<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />참고:
com.google.android.geo.API_KEY는 API 키의 권장되는 메타데이터 이름입니다. 이 이름의 키는 Android 플랫폼에서 Android용 Navigation SDK 등 여러 Google 지도 기반 API를 인증하는 데 사용할 수 있습니다. 이전 버전과의 호환성을 위해 API에서도 이름com.google.android.maps.v2.API_KEY지원합니다. 이 기존 이름을 사용하면 Android 지도 API v2에 대한 인증만 가능합니다. 애플리케이션에서는 API 키 메타데이터 이름을 하나만 지정할 수 있습니다. 두 개가 모두 지정되면 API 에서 예외가 발생합니다.- 프로그래매틱 방식으로 API 키를 제공합니다.
Secrets Gradle 플러그인을 사용하면
BuildConfig클래스에서 키를 사용할 수 있습니다. 앱의 초기화 (예:Application.onCreate()메서드)에서 다음과 같이 메서드를 호출합니다.Kotlin
- 다음 import 문을 추가합니다.
import com.google.android.libraries.navigation.NavigationApi
Application.onCreate()메서드에 다음을 추가합니다.NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)
자바
- 다음 import 문을 추가합니다.
import com.google.android.libraries.navigation.NavigationApi;
Application.onCreate()메서드에 다음을 추가합니다.NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
참고:setApiKey()를 사용할 때는 다음 사항에 유의하세요.- 비어 있지 않은 null이 아닌 API 키를 제공합니다.
- 애플리케이션 수명 동안
setApiKey()를 한 번만 호출합니다. 이 메서드는 두 번 이상 호출되면IllegalStateException을 발생시킵니다. Navigator와 같은 다른 Navigation SDK 구성요소를 초기화하기 전에setApiKey()를 호출합니다.- 이 메서드로 제공하는 키는
AndroidManifest.xml의 API 키를 재정의합니다. - Navigation SDK 버전 7.6 이상을 사용합니다.
- 다음 import 문을 추가합니다.
앱에 필요한 저작자 표시 포함
앱에서 Android용 Navigation SDK를 사용하는 경우 앱의 법적 고지 섹션에 저작자 표시 텍스트와 오픈소스 라이선스를 포함해야 합니다.
필요한 저작자 표시 텍스트와 오픈소스 라이선스는 Android용 Navigation SDK zip 파일에서 찾을 수 있습니다.
NOTICE.txtLICENSES.txt
모빌리티 또는 Fleet Engine Deliveries 고객인 경우
모빌리티 또는 Fleet Engine Deliveries 고객인 경우 모빌리티 문서에서 결제에 관해 알아보세요. 트랜잭션 기록에 관한 자세한 내용은 결제 설정, 청구 가능한 트랜잭션 기록, 보고, 청구 가능한 트랜잭션 기록 (Android)을 참고하세요.