הגדרת הפרויקט

המדריך הזה מפרט את הדרישות להגדרת build לשימוש ב-SDK לניווט ל-Android. ההוראות מבוססות על ההנחה שמותקנת אצלכם סביבת פיתוח משולבת (IDE) של Android ואתם מכירים את הפיתוח של Android.

דרישות מינימליות לשימוש ב-API של הניווט

  • פרויקט במסוף Google Cloud שבו מופעל ניווט SDK. כדי לנהל את התצורה, פנו לנציג שלכם בפלטפורמה של מפות Google.

  • האפליקציה חייבת לטרגט ל-Navigation SDK (גרסה 16) ואילך.

  • כדי להפעיל אפליקציה שנוצרה עם ה-SDK של הניווט במכשיר Android, אפליקציית Google Play Services צריכה להיות מותקנת ומופעלת.

  • יש להוסיף לאפליקציה את הטקסט של פרטי הייחוס והרישוי.

הגדרת הפרויקטים שלך: פרויקט במסוף Google Cloud ופרויקט Android

כדי ליצור או לבדוק אפליקציה, קודם צריך ליצור פרויקט במסוף Cloud ולהוסיף פרטי כניסה של מפתח API. הפרויקט חייב לכלול הקצאת הרשאות כדי לגשת ל-API של הניווט. כל המפתחות בפרויקט מסוף Cloud מקבלים את אותה גישה ל-API של הניווט. למפתח יכול להיות משויך יותר מפרויקט פיתוח אחד. אם כבר יש לכם פרויקט במסוף, אתם יכולים להוסיף מפתח לפרויקט הנוכחי.

כדי להגדיר

  1. בדפדפן האינטרנט המועדף עליכם, כמו Chrome, נכנסים אל Google Cloud Console ויוצרים פרויקט במסוף Google Cloud.
  2. ב-IDE, כמו ב-Android Studio, יוצרים פרויקט פיתוח אפליקציה ל-Android ורושמים את שם החבילה.
  3. תוכלו לפנות לנציג שלכם בפלטפורמה של מפות Google כדי לקבל גישה ל-Navigation SDK בפרויקט במסוף Google Cloud.
  4. מתוך מרכז השליטה של מסוף Google Cloud בדפדפן האינטרנט, יוצרים פרטי כניסה על מנת ליצור מפתח API עם הגבלות.
  5. בדף של מפתח API, לוחצים על 'אפליקציות ל-Android' בקטע *Application restrictions.
  6. לוחצים על Add את שם החבילה ואת טביעת האצבע, ואז מזינים את שם החבילה של פרויקט הפיתוח ואת טביעת האצבע מסוג SHA-1 של המפתח.
  7. לוחצים על שמירה.

הוספת ה-SDK לניווט לאפליקציה

ה-SDK לניווט זמין כחבילת Aar לאחר יצירת פרויקט הפיתוח, ניתן לשלב את ה-SDK. ההוראות האלה מבוססות על ההנחה שהשימוש ב-Android Studio בסביבת הפיתוח המשולבת (IDE).

  1. צריך להוריד את קובץ ה-zip של ה-SDK של הניווט ולחלץ אותו.

  2. ב-Android Studio, פותחים פרויקט ומוסיפים את החבילה של שירותי Google Play באמצעות מנהל ה-SDK.

  3. מספריית קובץ ה-ZIP, מעתיקים את libs/google_navigation.aar לספרייה app/libs של הפרויקט.

מגדירים את ה-build

לאחר יצירת הפרויקט, ניתן לקבוע את ההגדרות לפיתוח מוצלח של ה-build ולשימוש ב-API של הניווט.

עדכון הנכסים המקומיים

  • בתיקייה Gradle Scripts, פותחים את הקובץ local.properties ומוסיפים את android.useDeprecatedNdk=true.

עדכון סקריפט ה-build של Gradle

  • פותחים את הקובץ build.gradle (Module:app) ופועלים לפי ההנחיות הבאות כדי לעדכן את ההגדרות כך שיעמדו בדרישות של Navigation SDK, וכדאי לשקול להגדיר גם את אפשרויות האופטימיזציה.

    ההגדרות הנדרשות עבור Navigation SDK

    1. צריך להגדיר את minSdkVersion ל-16 ומעלה.
    2. צריך להגדיר את 'targetSDKversion' ל-API 21 כדי להעביר את הטיפול בהרשאות ל-API. עבור גרסאות קודמות, עליך לכלול באופן מפורש תהליכי הרשאות באפליקציה.
    3. כדאי להוסיף הגדרה של dexOptions שמגדילה את javaMaxHeapSize.
    4. אפשר להגדיר את המיקום לספריות נוספות.
    5. הוסף את repositories ואת dependencies עבור ה-SDK לניווט.
    6. מחליפים את מספרי הגרסאות שביחסי התלות בגרסאות העדכניות ביותר שזמינות.

    הגדרות אופציונליות לקיצור זמן ה-build

    • כדי לשפר את זמן ה-build של האפליקציה
    • כדי לייעל את השימוש ביחסי התלות, מפעילים את ProGuard ואת כיווץ המשאבים. ProGuard מסיר מיחסי תלות קוד ומשאבים שלא נמצאים בשימוש. אם שלב ProGuard פועל יותר מדי זמן, כדאי להפעיל את multidex לביצוע עבודת פיתוח.
    • מצמצמים את מספר התרגומים לשפות שכלולות ב-build. מגדירים את resConfigs לשפה אחת במהלך הפיתוח. לגרסת ה-build הסופית, צריך להגדיר 'resConfigs' לשפות שבהן אתם משתמשים בפועל. כברירת מחדל, Gradle כולל מחרוזות משאבים לכל השפות שנתמכות על ידי ה-SDK של הניווט.

בהמשך מוצגת דוגמה לסקריפט ה-build של 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'
  }

עדכון המניפסט של האפליקציה

  1. פותחים את הקובץ AndroidManifest.xml בתיקייה מניפסט.

  2. מוסיפים את מפתח ה-API בתוך הרכיב <application>. עליכם להשתמש במפתח ה-API שמוגדר בפרויקט במסוף Google Cloud כפי שמתואר בשלב למעלה.

    במניפסט חלקי שמוצג בדוגמה הזו, צריך להחליף את YOUR_API_KEY במפתח API משלך:

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

    במניפסט מלא שבהמשך אפשר לראות את ההגדרה של מפתח ה-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 של Navigation SDK ל-Android:

  • NOTICE.txt
  • LICENSES.txt

השלב הבא

למידע נוסף על שרטוט מסלול.