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

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

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

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

  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 Scripts ให้เปิดไฟล์ local.properties แล้วเพิ่ม android.useDeprecatedNdk=true

อัปเดตสคริปต์บิวด์ Gradle

  • เปิดไฟล์ build.gradle (Module:app) และใช้หลักเกณฑ์ต่อไปนี้เพื่ออัปเดตการตั้งค่าให้ตรงตามข้อกำหนดของ Navigation SDK รวมถึงพิจารณาตั้งค่าตัวเลือกการเพิ่มประสิทธิภาพด้วย

    การตั้งค่าที่จำเป็นสำหรับ Navigation SDK

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

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

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

    เพิ่ม Desugaring เพื่อรองรับ Java8

    • หากคุณสร้างแอปโดยใช้ปลั๊กอิน Android Gradle เวอร์ชัน 4.0.0 ขึ้นไป ปลั๊กอินจะขยายการรองรับการใช้ Java 8 Language API จำนวนหนึ่ง ดูข้อมูลเพิ่มเติมได้ที่การรองรับ Java 8 desugaring support ดูข้อมูลโค้ดสคริปต์บิวด์ตัวอย่างด้านล่างเพื่อดูตัวเลือกการคอมไพล์และทรัพยากร Dependency
    • สำหรับ Android เวอร์ชัน 7.3.0 ขึ้นไป คุณต้องใช้ Gradle 8.11.1, ปลั๊กอิน Android Gradle เวอร์ชัน 8.10.0 และไลบรารี Desugar com.android.tools:desugar_jdk_libs_nio:2.0.3
    • คุณต้องเปิดใช้ไลบรารี 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 ลงในระบบควบคุมเวอร์ชัน ดังนั้นเราขอแนะนำให้จัดเก็บคีย์ API ไว้ในไฟล์ secrets.properties ซึ่งอยู่ในไดเรกทอรีรากของโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ secrets.properties ได้ที่ ไฟล์พร็อพเพอร์ตี้ Gradle

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

วิธีติดตั้งปลั๊กอินข้อมูลลับ Gradle สำหรับ Android และจัดเก็บคีย์ API

  1. ใน Android Studio ให้เปิดไฟล์ 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")
        }
    }
  2. เปิดไฟล์ 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")
    }
  3. หากใช้ Android Studio ให้ ซิงค์โปรเจ็กต์กับ Gradle
  4. เปิด local.properties ในไดเรกทอรีระดับโปรเจ็กต์ แล้วเพิ่ม โค้ดต่อไปนี้ แทนที่ YOUR_API_KEY ด้วยคีย์ API ของคุณ
    MAPS_API_KEY=YOUR_API_KEY
  5. คุณสามารถเพิ่มคีย์ 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 คุณสามารถใช้คีย์ที่มีชื่อนี้เพื่อตรวจสอบสิทธิ์กับ Google Maps API หลายรายการบนแพลตฟอร์ม 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

      1. เพิ่มคำสั่งนำเข้าต่อไปนี้
        import com.google.android.libraries.navigation.NavigationApi
      2. เพิ่มโค้ดต่อไปนี้ลงในเมธอด Application.onCreate()
        NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)

      Java

      1. เพิ่มคำสั่งนำเข้าต่อไปนี้
        import com.google.android.libraries.navigation.NavigationApi;
      2. เพิ่มโค้ดต่อไปนี้ลงในเมธอด Application.onCreate()
        NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
      หมายเหตุ: เมื่อใช้ setApiKey() โปรดคำนึงถึงสิ่งต่อไปนี้
      • ระบุคีย์ API ที่ไม่ใช่ค่าว่างและไม่ใช่ค่าว่างเปล่า
      • เรียก setApiKey() เพียงครั้งเดียวตลอดอายุการใช้งานแอปพลิเคชัน เมธอดจะแสดง IllegalStateException หากมีการเรียกมากกว่า 1 ครั้ง
      • เรียก setApiKey() ก่อนเริ่มต้นคอมโพเนนต์อื่นๆ ของ Navigation SDK เช่น Navigator
      • คีย์ที่คุณระบุด้วยเมธอดนี้จะลบล้างคีย์ API ใดก็ตามใน AndroidManifest.xml
      • ใช้ Navigation SDK เวอร์ชัน 7.6 ขึ้นไป

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

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

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

  • NOTICE.txt
  • LICENSES.txt

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

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