การกําหนดค่าโปรเจ็กต์

คู่มือนี้แสดงข้อกำหนดการกำหนดค่าบิลด์สำหรับการใช้ Navigation SDK สำหรับ Android คำแนะนำนี้จะถือว่าคุณได้ติดตั้ง Android IDE แล้วและคุ้นเคยกับการพัฒนาซอฟต์แวร์ Android

ข้อกำหนดขั้นต่ำสำหรับการใช้ Navigation SDK

  • โปรเจ็กต์ Google Cloud Console ที่เปิดใช้ Navigation SDK สำหรับการจัดสรร โปรดสอบถามตัวแทนของ Google Maps Platform

  • แอปของคุณต้องกำหนดเป้าหมายไปยัง Navigation SDK (เวอร์ชัน 16) ขึ้นไป

  • หากต้องการเรียกใช้แอปที่สร้างด้วย Navigation SDK อุปกรณ์ Android ต้องติดตั้งและเปิดใช้บริการ Google Play

  • ต้องเพิ่มการระบุแหล่งที่มาและข้อความการอนุญาตให้ใช้สิทธิลงในแอป

ตั้งค่าโปรเจ็กต์: โปรเจ็กต์ Google Cloud Console และโปรเจ็กต์ Android

คุณต้องสร้างโปรเจ็กต์ Cloud Console และเพิ่มข้อมูลเข้าสู่ระบบคีย์ API ก่อนจึงจะสร้างหรือทดสอบแอปได้ โปรเจ็กต์ต้องมีการจัดสรรเพื่อเข้าถึง Navigation SDK คีย์ทั้งหมดภายในโปรเจ็กต์ Cloud Console จะได้รับสิทธิ์เข้าถึง Navigation SDK ในแบบเดียวกัน คีย์หนึ่งๆ จะมีโปรเจ็กต์การพัฒนาที่เชื่อมโยงอยู่ได้มากกว่า 1 โปรเจ็กต์ หากมีโปรเจ็กต์คอนโซลอยู่แล้ว คุณเพิ่มคีย์ลงในโปรเจ็กต์ปัจจุบันได้

วิธีการตั้งค่า

  1. ในเว็บเบราว์เซอร์ที่คุณชื่นชอบ เช่น Chrome ให้ลงชื่อเข้าใช้คอนโซล Google Cloud แล้วสร้างโปรเจ็กต์ Google Cloud Console
  2. ใน IDE เช่น Android Studio ให้สร้างโครงการการพัฒนาแอป Android และบันทึกชื่อแพ็กเกจ
  3. ติดต่อตัวแทน Google Maps Platform เพื่อให้สิทธิ์เข้าถึง SDK การนำทางสำหรับโปรเจ็กต์คอนโซล Google Cloud
  4. ขณะอยู่ในหน้าแดชบอร์ด Google Cloud Console ในเว็บเบราว์เซอร์ ให้สร้างข้อมูลเข้าสู่ระบบเพื่อสร้างคีย์ API ที่มีข้อจำกัด
  5. ในหน้าคีย์ API ให้คลิกแอป Android ในส่วน *การจำกัดแอปพลิเคชัน
  6. คลิกเพิ่มชื่อแพ็กเกจและลายนิ้วมือ จากนั้นป้อนชื่อแพ็กเกจของโปรเจ็กต์การพัฒนาและลายนิ้วมือ SHA-1 สำหรับคีย์ดังกล่าว
  7. คลิกบันทึก

เพิ่ม Navigation SDK ลงในแอปของคุณ

Navigation SDK พร้อมใช้งานในแพ็กเกจ Aar หลังจากสร้างโปรเจ็กต์การพัฒนาแล้ว คุณจะผสานรวม SDK ได้ วิธีการเหล่านี้มีไว้สำหรับการใช้ Android Studio สำหรับ IDE

  1. ดาวน์โหลดและแตกไฟล์ ZIP ของ Navigation SDK

  2. ใน Android Studio ให้เปิดโปรเจ็กต์และเพิ่มแพ็กเกจบริการ Google Play โดยใช้เครื่องมือจัดการ SDK

  3. จากไดเรกทอรีไฟล์ ZIP ให้คัดลอก libs/google_navigation.aar ลงในไดเรกทอรี app/libs ของโปรเจ็กต์

กำหนดค่าบิลด์

หลังจากสร้างโปรเจ็กต์แล้ว คุณจะกำหนดการตั้งค่าสำหรับบิลด์และการใช้ Navigation SDK ที่ประสบความสำเร็จได้

อัปเดตพร็อพเพอร์ตี้ในพื้นที่

  • ในโฟลเดอร์สคริปต์ Gradle ให้เปิดไฟล์ local.properties และเพิ่ม android.useDeprecatedNdk=true

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

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

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

    1. ตั้งค่า minSdkVersion เป็น 16 ขึ้นไป
    2. ตั้งค่า "targetSDKversion" สำหรับ API 21 เพื่อเปลี่ยนสิทธิ์การจัดการไปยัง API สำหรับเวอร์ชันก่อนหน้า คุณต้องระบุขั้นตอนการให้สิทธิ์ในแอปอย่างชัดแจ้ง
    3. เพิ่มการตั้งค่า dexOptions ที่จะเพิ่ม javaMaxHeapSize
    4. กำหนดตำแหน่งที่ตั้งสำหรับคลังเพิ่มเติม
    5. เพิ่ม repositories และ dependencies สำหรับ Navigation SDK
    6. แทนที่หมายเลขเวอร์ชันในทรัพยากร Dependency ด้วยเวอร์ชันล่าสุดที่มีอยู่

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

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

ด้านล่างนี้เป็นตัวอย่างสคริปต์บิลด์ Gradle สำหรับแอปพลิเคชัน

  
  apply plugin: 'com.android.application'

  ext {
      supportVersion = "27.1.1"
      lifecycle_version = "1.1.1"
  }

  android {
      compileSdkVersion 27
      buildToolsVersion '28.0.3'

      defaultConfig {
          applicationId "com.example.navigationapidemo"
          minSdkVersion 16
          targetSdkVersion 27
          versionCode 1
          versionName "1.0"
          resConfigs "en"
      }

      dexOptions {
          // This increases the amount of memory available to the dexer. This is
          // required to build apps using the Navigation SDK.
          javaMaxHeapSize "4g"
      }
      buildTypes {
          all {
              minifyEnabled true
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
      compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
  }

  // Specify where to find additional libraries and the location of google_navigation.aar file.
  repositories {
      flatDir {
          dirs 'libs'
      }
      google()
  }
  dependencies {
      api fileTree(include: ['*.jar'], dir: 'libs')

      // Include the Google Navigation API library
      api(name: 'google_navigation', ext: 'aar')

      // These dependencies are required for the Navigation API to function
      // properly at runtime.
      api "org.chromium.net:cronet-fallback:69.3497.100"
      // Optional for Cronet users:
      // api "org.chromium.net:cronet-api:69.3497.100"
      api "com.android.support:appcompat-v7:${supportVersion}"
      api "com.android.support:cardview-v7:${supportVersion}"
      api "com.android.support:design:${supportVersion}"
      api "com.android.support:mediarouter-v7:${supportVersion}"
      api "com.android.support:preference-v7:${supportVersion}"
      api "com.android.support:recyclerview-v7:${supportVersion}"
      api 'com.github.bumptech.glide:glide:4.9.0'
      api 'com.github.bumptech.glide:okhttp-integration:4.9.0'
      api "android.arch.lifecycle:common-java8:$lifecycle_version"
      api 'com.google.android.datatransport:transport-api:2.2.0'
      api 'com.google.android.datatransport:transport-backend-cct:2.2.0'
      api 'com.google.android.datatransport:transport-runtime:2.2.0'
      api 'joda-time:joda-time:2.9.9'

      // The Navigation SDK does not require the
      // Places API; however, the demo app for does.
      api 'com.google.android.gms:play-services-places:10.2.1'

      annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
  }

อัปเดตไฟล์ Manifest ของแอป

  1. เปิดไฟล์ AndroidManifest.xml ในโฟลเดอร์ Manifest

  2. เพิ่มคีย์ API ของคุณภายในองค์ประกอบ <application> คุณต้องใช้คีย์ API ที่กำหนดไว้ในโปรเจ็กต์คอนโซล Google Cloud ตามที่อธิบายไว้ในขั้นตอนด้านบน

    ในไฟล์ Manifest บางส่วนที่แสดงในตัวอย่างนี้ คุณจะต้องแทนที่ YOUR_API_KEY ด้วยคีย์ API ของคุณเอง ดังนี้

          <meta-data
              android:name="com.google.android.geo.API_KEY"
              android:value="YOUR_API_KEY"/>
    

    ไฟล์ Manifest ที่สมบูรณ์ด้านล่างแสดงการตั้งค่าสำหรับคีย์ API และ intent ที่ว่างเปล่าสำหรับ MainActivity ที่ทำงานเมื่อเริ่มต้น

    
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.navigationapidemo" >
    
          <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:supportsRtl="true"
              android:theme="@style/_AppTheme" >
    
              <meta-data
                  android:name="com.google.android.geo.API_KEY"
                  android:value="YOUR_API_KEY"/>
    
              <activity android:name=".MainActivity" >
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
        </manifest>
    
        ```
    

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

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

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

  • NOTICE.txt
  • LICENSES.txt

ขั้นตอนถัดไป

เรียนรู้วิธีวางแผนเส้นทาง