หน้านี้จะอธิบายวิธีผสานรวม Navigation SDK เข้ากับโปรเจ็กต์การพัฒนา
เพิ่ม Navigation SDK ลงในโปรเจ็กต์
Navigation SDK พร้อมใช้งานผ่านที่เก็บ Maven ของ Google
คุณเพิ่ม SDK ลงในโปรเจ็กต์ได้โดยใช้การกำหนดค่า Gradle build.gradle หรือ Maven pom.xml
เพิ่มทรัพยากร Dependency ต่อไปนี้ลงในการกําหนดค่า Gradle หรือ Maven โดยแทนที่ตัวยึดตําแหน่ง
VERSION_NUMBERด้วย Navigation SDK สําหรับ Android เวอร์ชันที่ต้องการ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>หากคุณมีทรัพยากร Dependency ที่ใช้ Maps SDK คุณต้องยกเว้นทรัพยากร Dependency ในแต่ละทรัพยากร Dependency ที่ประกาศซึ่งอิงตาม 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 ให้เปิดไฟล์
local.propertiesแล้วเพิ่มandroid.useDeprecatedNdk=true
อัปเดตสคริปต์บิลด์ Gradle
เปิดไฟล์
build.gradle (Module:app)และใช้หลักเกณฑ์ต่อไปนี้ เพื่ออัปเดตการตั้งค่าให้เป็นไปตามข้อกำหนดสำหรับ Navigation SDK และพิจารณาตั้งค่า ตัวเลือกการเพิ่มประสิทธิภาพด้วยการตั้งค่าที่จำเป็นสำหรับ Navigation SDK
- ตั้งค่า
minSdkVersionเป็น 24 ขึ้นไป - ตั้งค่า
targetSdkVersionเป็น 36 ขึ้นไป - เพิ่ม
dexOptionsการตั้งค่าที่เพิ่มjavaMaxHeapSize - ตั้งค่าตำแหน่งสำหรับไลบรารีเพิ่มเติม
- เพิ่ม
repositoriesและdependenciesสำหรับ Navigation SDK - แทนที่หมายเลขเวอร์ชันใน Dependencies ด้วยเวอร์ชันล่าสุด ที่พร้อมใช้งาน
การตั้งค่าที่ไม่บังคับเพื่อลดเวลาบิลด์
- เปิดใช้การลดขนาดโค้ดและการลดขนาดทรัพยากร โดยใช้ R8/ProGuard เพื่อนำโค้ดและทรัพยากรที่ไม่ได้ใช้ออกจากทรัพยากร Dependency หากขั้นตอน R8/ProGuard ใช้เวลานานเกินไป ให้พิจารณาเปิดใช้ Multidex สำหรับงานพัฒนา
- ลดจำนวนคำแปลภาษาที่รวมอยู่ในบิลด์: ตั้งค่า
resConfigsสำหรับภาษาเดียวในระหว่างการพัฒนาซอฟต์แวร์ สำหรับการสร้างขั้นสุดท้าย ให้ตั้งค่าresConfigsสำหรับภาษาที่คุณใช้จริง โดยค่าเริ่มต้น Gradle จะมีสตริงทรัพยากรสำหรับทุกภาษาที่ Navigation SDK รองรับ
เพิ่มกระบวนการ Desugaring สำหรับรองรับ Java8
- หากคุณสร้างแอปโดยใช้ปลั๊กอิน Android Gradle 4.0.0 ขึ้นไป ปลั๊กอินจะขยายการรองรับการใช้ API ภาษา Java 8 จำนวนหนึ่ง ดูข้อมูลเพิ่มเติมได้ที่การรองรับ การยกเลิกการเพิ่มน้ำตาลใน Java 8 ดูตัวอย่างข้อมูลโค้ดสคริปต์บิลด์ด้านล่างสำหรับวิธี คอมไพล์และตัวเลือกทรัพยากร Dependency
- ใช้ Gradle, ปลั๊กอิน Android Gradle (AGP) และไลบรารี Desugar เวอร์ชันที่ตรงกับเวอร์ชัน Navigation SDK ดูตาราง ต่อไปนี้
- ต้องเปิดใช้ไลบรารี Desugar สำหรับโมดูล
appและโมดูลใดก็ตาม ที่ขึ้นต่อกันกับ Navigation SDK โดยตรง
- ตั้งค่า
ตารางต่อไปนี้แสดงเวอร์ชันของไลบรารี Gradle, AGP และ Desugar ที่จำเป็นสำหรับ Navigation SDK แต่ละเวอร์ชัน
| เวอร์ชัน Navigation SDK | เวอร์ชัน Gradle | เวอร์ชัน AGP | ไลบรารี Desugar |
|---|---|---|---|
| 8.0.0 ขึ้นไป | 9.1.0 | 9.0.1 | com.android.tools:desugar_jdk_libs_nio:2.1.5 |
| 7.7.0 ถึง 7.9.0 | 8.13 | 8.13.2 | com.android.tools:desugar_jdk_libs_nio:2.1.5 |
| 7.3.0 ถึง 7.6.0 | 8.11.1 | 8.10.0 | com.android.tools:desugar_jdk_libs_nio:2.0.3 |
ด้านล่างนี้คือตัวอย่างสคริปต์การสร้าง Gradle สำหรับแอปพลิเคชัน ดูชุดการอัปเดตของทรัพยากร Dependency ในแอปตัวอย่าง เนื่องจากเวอร์ชัน 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.1.5'
}
เพิ่มคีย์ API ลงในแอป
ส่วนนี้อธิบายวิธีจัดเก็บคีย์ API เพื่อให้แอปอ้างอิงได้อย่างปลอดภัย คุณไม่ควรเช็คอินคีย์ API ลงในระบบควบคุมเวอร์ชัน ดังนั้นเราขอแนะนำให้จัดเก็บไว้ในไฟล์ secrets.properties ซึ่งอยู่ในไดเรกทอรีรากของโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ secrets.properties ได้ที่
ไฟล์พร็อพเพอร์ตี้ Gradle
หากต้องการเพิ่มประสิทธิภาพงานนี้ เราขอแนะนำให้ใช้ปลั๊กอินข้อมูลลับ Gradle สำหรับ Android
วิธีติดตั้งปลั๊กอินข้อมูลลับ Gradle สำหรับ Android และจัดเก็บคีย์ API
-
ใน Android Studio ให้เปิดไฟล์
build.gradleระดับรูท แล้วเพิ่มโค้ดต่อไปนี้ลงในองค์ประกอบdependenciesภายใต้buildscriptดึงดูด
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ดึงดูด
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 Studio ให้ซิงค์โปรเจ็กต์กับ Gradle
-
เปิด
local.propertiesในไดเรกทอรีระดับโปรเจ็กต์ แล้วเพิ่มโค้ดต่อไปนี้ แทนที่YOUR_API_KEYด้วยคีย์ APIMAPS_API_KEY=YOUR_API_KEY
-
คุณจะเพิ่มคีย์ API ลงในไฟล์
AndroidManifest.xmlหรือระบุคีย์ API โดยใช้โปรแกรมก็ได้- เพิ่มคีย์ API ลงใน
AndroidManifest.xmlโดยทำดังนี้<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />หมายเหตุ:
com.google.android.geo.API_KEYคือชื่อข้อมูลเมตาที่แนะนำ สำหรับคีย์ API คีย์ที่มีชื่อนี้ใช้เพื่อตรวจสอบสิทธิ์กับ API ที่อิงตาม Google Maps หลายรายการในแพลตฟอร์ม Android ได้ ซึ่งรวมถึง Navigation SDK สำหรับ Android API ยังรองรับชื่อcom.google.android.maps.v2.API_KEYเพื่อให้เข้ากันได้แบบย้อนหลัง ชื่อเดิมนี้ อนุญาตให้ตรวจสอบสิทธิ์กับ Android Maps API v2 เท่านั้น แอปพลิเคชันสามารถ ระบุชื่อข้อมูลเมตาของคีย์ API ได้เพียงชื่อเดียวเท่านั้น หากระบุทั้ง 2 อย่าง API จะ แสดงข้อยกเว้น - ระบุคีย์ API แบบเป็นโปรแกรมโดยทำดังนี้
ปลั๊กอินข้อมูลลับ Gradle จะทำให้คีย์พร้อมใช้งานในคลาส
BuildConfigในการเริ่มต้นแอป (เช่น ในเมธอดApplication.onCreate()) ให้เรียกเมธอดดังนี้Kotlin
- เพิ่มคำสั่งนำเข้าต่อไปนี้
import com.google.android.libraries.navigation.NavigationApi
- เพิ่มโค้ดต่อไปนี้ในเมธอด
Application.onCreate()NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)
Java
- เพิ่มคำสั่งนำเข้าต่อไปนี้
import com.google.android.libraries.navigation.NavigationApi;
- เพิ่มโค้ดต่อไปนี้ในเมธอด
Application.onCreate()NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
หมายเหตุ: เมื่อใช้setApiKey()โปรดคำนึงถึงสิ่งต่อไปนี้- ระบุคีย์ API ที่ไม่ใช่ค่าว่างและไม่ใช่สตริงว่าง
- เรียกใช้
setApiKey()เพียงครั้งเดียวตลอดอายุการใช้งานของแอปพลิเคชัน เมธอดจะแสดงIllegalStateExceptionหากมีการเรียกใช้มากกว่า 1 ครั้ง - เรียกใช้
setApiKey()ก่อนเริ่มต้นคอมโพเนนต์อื่นๆ ของ Navigation SDK เช่นNavigator - คีย์ที่คุณระบุด้วยวิธีนี้จะลบล้างคีย์ API ใน
AndroidManifest.xml - ใช้ Navigation SDK เวอร์ชัน 7.6 ขึ้นไป
- เพิ่มคำสั่งนำเข้าต่อไปนี้
- เพิ่มคีย์ API ลงใน
รวมการระบุแหล่งที่มาที่จำเป็นในแอป
หากใช้ Navigation SDK สำหรับ Android ในแอป คุณต้องใส่ข้อความแสดงแหล่งที่มาและใบอนุญาตโอเพนซอร์สเป็นส่วนหนึ่งของส่วนประกาศทางกฎหมายของแอป
คุณดูข้อความแสดงแหล่งที่มาและใบอนุญาตโอเพนซอร์สที่จำเป็นได้ในไฟล์ ZIP ของ Navigation SDK สำหรับ Android
NOTICE.txtLICENSES.txt
หากคุณเป็นลูกค้า Mobility หรือ Fleet Engine Deliveries
หากคุณเป็นลูกค้า Mobility หรือ Fleet Engine Deliveries โปรดดูข้อมูลเกี่ยวกับการเรียกเก็บเงินในเอกสารประกอบของ Mobility ดูข้อมูลเพิ่มเติมเกี่ยวกับ การบันทึกธุรกรรมได้ที่ ตั้งค่าการเรียกเก็บเงิน บันทึกธุรกรรมที่เรียกเก็บเงินได้ การรายงาน และ บันทึกธุรกรรมที่เรียกเก็บเงินได้ (Android)
ทรัพยากร Dependency ที่กำหนดเอง (ไม่ใช่ Gradle/Maven)
หากระบบบิลด์ไม่แก้ปัญหาการอ้างอิงแบบทรานซิทีฟ (เช่น Bazel) หรือหากผสานรวม AAR ด้วยตนเอง คุณต้องเพิ่มการอ้างอิงเหล่านี้ลงในโปรเจ็กต์ Gradle และ Maven จะแก้ไขโดยอัตโนมัติ
androidx.datastore:datastore-coreandroidx.datastore:datastore-guavacom.google.guava:listenablefutureandroidx.concurrent:concurrent-futures