ตั้งค่าโปรเจ็กต์ Android Studio

หน้านี้จะอธิบายวิธีผสานรวม Navigation SDK เข้ากับโปรเจ็กต์การพัฒนา

เพิ่ม Navigation SDK ลงในโปรเจ็กต์

Navigation SDK พร้อมให้บริการผ่านที่เก็บ Maven ของ Google คุณเพิ่ม SDK ลงในโปรเจ็กต์ได้โดยใช้การกำหนดค่า Gradle build.gradle หรือ Maven pom.xml

  1. เพิ่มทรัพยากร 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>
    
  2. หากมีทรัพยากร 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

    1. ตั้งค่า minSdkVersion เป็น 23 ขึ้นไป
    2. ตั้งค่า targetSdkVersion เป็น 34 ขึ้นไป
    3. เพิ่มdexOptionsการตั้งค่าที่เพิ่มjavaMaxHeapSize
    4. ตั้งค่าตำแหน่งสำหรับไลบรารีเพิ่มเติม
    5. เพิ่ม repositories และ dependencies สำหรับ Navigation SDK
    6. แทนที่หมายเลขเวอร์ชันใน Dependencies ด้วยเวอร์ชันล่าสุด ที่มีอยู่

    การตั้งค่าที่ไม่บังคับเพื่อลดเวลาในการสร้าง

    • เปิดใช้การลดขนาดโค้ดและการลดขนาดทรัพยากร โดยใช้ R8/ProGuard เพื่อนำโค้ดและทรัพยากรที่ไม่ได้ใช้งานออกจากทรัพยากร Dependency หากขั้นตอน R8/ProGuard ใช้เวลานานเกินไป ให้ลองเปิดใช้ Multidex สำหรับงานพัฒนา
    • ลดจำนวนคำแปลภาษาที่รวมไว้ในบิลด์: ตั้งค่า resConfigsสำหรับภาษาเดียวในระหว่างการพัฒนา สําหรับบิลด์สุดท้าย ให้ตั้งค่า resConfigs สําหรับภาษาที่คุณใช้จริง โดยค่าเริ่มต้น Gradle จะรวมสตริงทรัพยากรสำหรับทุกภาษาที่ Navigation SDK รองรับ

    เพิ่มการยกเลิกการลดรูปแบบสำหรับรองรับ Java8

    • หากคุณสร้างแอปโดยใช้ปลั๊กอิน Android Gradle 4.0.0 ขึ้นไป ปลั๊กอินจะขยายการรองรับการใช้ Java 8 Language API จำนวนหนึ่ง ดูข้อมูลเพิ่มเติมได้ที่การรองรับ การแยกส่วน Java 8 ดูตัวอย่างข้อมูลโค้ดสคริปต์บิลด์ด้านล่างเพื่อดูวิธี คอมไพล์และตัวเลือกการขึ้นต่อกัน
    • เราขอแนะนำให้ใช้ Gradle 8.4, ปลั๊กอิน Android Gradle เวอร์ชัน 8.3.0 และไลบรารี Desugar com.android.tools:desugar_jdk_libs_nio:2.0.3 การตั้งค่านี้ใช้ได้กับ Navigation SDK สำหรับ Android เวอร์ชัน 6.0.0 ขึ้นไป
    • ต้องเปิดใช้ไลบรารี Desugar สำหรับโมดูล app และโมดูล ใดก็ตามที่ขึ้นต่อกันกับ Navigation SDK โดยตรง

ด้านล่างเป็นตัวอย่างสคริปต์การสร้าง 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.0.3'
}

เพิ่มคีย์ API ลงในแอป

ส่วนนี้อธิบายวิธีจัดเก็บคีย์ API เพื่อให้แอปอ้างอิงได้อย่างปลอดภัย คุณไม่ควรเช็คอินคีย์ API ในระบบควบคุมเวอร์ชัน ดังนั้นเราขอแนะนำให้จัดเก็บไว้ในไฟล์ secrets.properties ซึ่งอยู่ในไดเรกทอรีรากของโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ secrets.properties ได้ที่ไฟล์พร็อพเพอร์ตี้ Gradle

เราขอแนะนำให้ใช้ปลั๊กอินข้อมูลลับ Gradle สำหรับ Android เพื่อให้งานนี้มีประสิทธิภาพมากขึ้น

วิธีติดตั้งปลั๊กอินข้อมูลลับ Gradle สำหรับ Android ในโปรเจ็กต์ Google Maps

  1. ใน Android Studio ให้เปิดไฟล์ build.gradle.kts หรือ build.gradle ระดับบนสุด แล้วเพิ่มโค้ดต่อไปนี้ลงในองค์ประกอบ dependencies ภายใน buildscript

    Kotlin

    buildscript {
        dependencies {
            classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
        }
    }

    ดึงดูด

    buildscript {
        dependencies {
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
        }
    }
  2. เปิดไฟล์ build.gradle.kts หรือ build.gradle ระดับโมดูล แล้วเพิ่มโค้ดต่อไปนี้ลงในองค์ประกอบ plugins

    Kotlin

    plugins {
        // ...
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }

    ดึงดูด

    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }
  3. ในไฟล์ build.gradle.kts หรือ build.gradle ระดับโมดูล ให้ตรวจสอบ ว่าตั้งค่า targetSdk และ compileSdk เป็น 34
  4. ซิงค์โปรเจ็กต์กับ Gradle
  5. เปิดไฟล์ secrets.properties ในไดเรกทอรีระดับบนสุด แล้วเพิ่มโค้ดต่อไปนี้ แทนที่ YOUR_API_KEY ด้วยคีย์ API ของคุณ โปรดจัดเก็บคีย์ไว้ในไฟล์นี้ เนื่องจากระบบจะไม่ตรวจสอบsecrets.properties ในระบบควบคุมเวอร์ชัน
    MAPS_API_KEY=YOUR_API_KEY
  6. สร้างไฟล์ local.defaults.properties ในไดเรกทอรีระดับบนสุด ซึ่งเป็นโฟลเดอร์เดียวกับไฟล์ secrets.properties แล้วเพิ่มโค้ดต่อไปนี้

    MAPS_API_KEY=DEFAULT_API_KEY

    จุดประสงค์ของไฟล์นี้คือการระบุตำแหน่งสำรองสำหรับคีย์ API ในกรณีที่ไม่พบไฟล์ secrets.properties เพื่อให้การสร้างไม่ล้มเหลว ปัญหานี้อาจเกิดขึ้นในกรณีต่อไปนี้ คุณโคลนแอปจากระบบควบคุมเวอร์ชันที่ละเว้น secrets.properties และ คุณยังไม่ได้สร้างไฟล์ secrets.properties ในเครื่องเพื่อระบุ คีย์ API

  7. ในไฟล์ AndroidManifest.xml ให้ไปที่ com.google.android.geo.API_KEY แล้วอัปเดต android:value attribute หากไม่มีแท็ก <meta-data> ให้สร้างแท็กดังกล่าวเป็นแท็กย่อยของแท็ก <application>
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />

    หมายเหตุ: com.google.android.geo.API_KEY คือชื่อข้อมูลเมตาที่แนะนำ สำหรับคีย์ API คีย์ที่มีชื่อนี้ใช้เพื่อตรวจสอบสิทธิ์กับ Google Maps API หลายรายการในแพลตฟอร์ม Android ได้ ซึ่งรวมถึง Navigation SDK สำหรับ Android API ยังรองรับชื่อ com.google.android.maps.v2.API_KEY เพื่อให้เข้ากันได้กับรุ่นก่อนหน้า ชื่อเดิมนี้ อนุญาตให้ตรวจสอบสิทธิ์กับ Android Maps API v2 เท่านั้น แอปพลิเคชันระบุชื่อข้อมูลเมตาของคีย์ API ได้เพียงชื่อเดียวเท่านั้น หากระบุทั้ง 2 อย่าง API จะส่งข้อยกเว้น

  8. ใน Android Studio ให้เปิดไฟล์ build.gradle.kts หรือ build.gradle ระดับโมดูล แล้วแก้ไขพร็อพเพอร์ตี้ secrets หากไม่มีพร็อพเพอร์ตี้ secrets ให้เพิ่ม

    แก้ไขพร็อพเพอร์ตี้ของปลั๊กอินเพื่อตั้งค่า propertiesFileName เป็น secrets.properties ตั้งค่า defaultPropertiesFileName เป็น local.defaults.properties และตั้งค่าพร็อพเพอร์ตี้อื่นๆ

    Kotlin

    secrets {
        // To add your Maps API key to this project:
        // 1. If the secrets.properties file does not exist, create it in the same folder as the local.properties file.
        // 2. Add this line, where YOUR_API_KEY is your API key:
        //        MAPS_API_KEY=YOUR_API_KEY
        propertiesFileName = "secrets.properties"
    
        // A properties file containing default secret values. This file can be
        // checked in version control.
        defaultPropertiesFileName = "local.defaults.properties"
    }
            

    ดึงดูด

    secrets {
        // To add your Maps API key to this project:
        // 1. If the secrets.properties file does not exist, create it in the same folder as the local.properties file.
        // 2. Add this line, where YOUR_API_KEY is your API key:
        //        MAPS_API_KEY=YOUR_API_KEY
        propertiesFileName = "secrets.properties"
    
        // A properties file containing default secret values. This file can be
        // checked in version control.
        defaultPropertiesFileName = "local.defaults.properties"
    }
            

รวมการระบุแหล่งที่มาที่จำเป็นในแอป

หากใช้ Navigation SDK สำหรับ Android ในแอป คุณต้องระบุ ข้อความระบุแหล่งที่มาและใบอนุญาตโอเพนซอร์สเป็นส่วนหนึ่งของส่วนประกาศทางกฎหมายของแอป

คุณดูข้อความระบุแหล่งที่มาและใบอนุญาตโอเพนซอร์สที่จำเป็นได้ใน ไฟล์ ZIP ของ Navigation SDK สำหรับ Android โดยทำดังนี้

  • NOTICE.txt
  • LICENSES.txt

หากคุณเป็นลูกค้า Mobility หรือ Fleet Engine Deliveries

หากคุณเป็นลูกค้า Mobility หรือ Fleet Engine Deliveries โปรดดูข้อมูลเกี่ยวกับการเรียกเก็บเงินในเอกสารประกอบของ Mobility ดูข้อมูลเพิ่มเติมเกี่ยวกับ การบันทึกธุรกรรมได้ที่ ตั้งค่าการเรียกเก็บเงิน บันทึกธุรกรรมที่เรียกเก็บเงินได้ การรายงาน และ บันทึกธุรกรรมที่เรียกเก็บเงินได้ (Android)