איך מגדירים פרויקט Android Studio

בדף הזה מוסבר איך להגדיר פרויקט ב-Android Studio כך שישתמש ב-Maps SDK for Android בלי להשתמש בתבנית של מפות Google שמפורטת במדריך למתחילים.

התבנית של מפות Google מגדירה ומוסיפה באופן אוטומטי מפה בסיסית לפרויקט חדש ב-Android Studio. עם זאת, אפשר גם להוסיף מפה לפרויקט Android שמשתמש בתבנית אחרת של Android Studio. לשם כך, צריך להגדיר את הפרויקט באופן ידני ואז להוסיף את המפה.

שלב 1: מגדירים את Android Studio

במסמך הזה מתוארת סביבת פיתוח באמצעות Android Studio Hedgehog ו-Android Gradle plugin בגרסה 8.2.

שלב 2. הגדרת ה-SDK

הספרייה של SDK של מפות ל-Android זמינה דרך מאגר Maven של Google. כדי להוסיף את ה-SDK לאפליקציה:

  1. בקובץ settings.gradle.kts ברמה העליונה, כוללים את פורטל הפלאגינים של Gradle, את מאגר Maven של Google ואת מאגר Maven המרכזי בתוך הבלוק pluginManagement. הבלוק pluginManagement חייב להופיע לפני כל הצהרות אחרות בסקריפט.
    pluginManagement {
        repositories {
            gradlePluginPortal()
            google()
            mavenCentral()
        }
    } 
  2. בקובץ settings.gradle.kts ברמה העליונה, צריך לכלול את מאגר Maven של Google ואת מאגר Maven המרכזי בתוך הבלוק dependencyResolutionManagement:
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            google()
            mavenCentral()
        }
    } 
  3. בקובץ build.gradle.kts או build.gradle ברמת המודול, מוסיפים את התלות ב-Google Play Services ל-Maps SDK for Android.

    Kotlin

    dependencies {
    
        // Maps SDK for Android
        implementation("com.google.android.gms:play-services-maps:19.0.0")
    }

    Groovy

    dependencies {
    
        // Maps SDK for Android
        implementation "com.google.android.gms:play-services-maps:19.0.0"
    }
  4. בקובץ build.gradle.kts או build.gradle ברמת המודול, מגדירים את compileSdk ואת minSdk לערכי הערכים הבאים:

    Kotlin

    android {
        compileSdk = 34
    
        defaultConfig {
            minSdk = 21
            // ...
        }
    }

    Groovy

    android {
        compileSdk 34
    
        defaultConfig {
            minSdk 21
            // ...
        }
    }
  5. בקטע buildFeatures בקובץ build.gradle.kts או build.gradle ברמת המודול, מוסיפים את הכיתה BuildConfig, שבאמצעותה אפשר לגשת לערכים של המטא-נתונים שמוגדרים בהמשך התהליך:

    Kotlin

    android {
      // ...
      buildFeatures {
        buildConfig = true
        // ...
      }
    }

    Groovy

    android {
      // ...
      buildFeatures {
        buildConfig true
        // ...
      }
    }

שלב 3: מוסיפים את מפתח ה-API לפרויקט

בקטע הזה מוסבר איך לאחסן את מפתח ה-API כך שהאפליקציה תוכל להפנות אליו בצורה מאובטחת. לא מומלץ להוסיף את מפתח ה-API למערכת לניהול גרסאות, לכן מומלץ לאחסן אותו בקובץ secrets.properties שנמצא בספריית השורש של הפרויקט. מידע נוסף על הקובץ secrets.properties זמין במאמר קבצי מאפיינים של Gradle.

כדי לייעל את המשימה הזו, מומלץ להשתמש בפלאגין של Secrets Gradle ל-Android.

כדי להתקין את הפלאגין של Secrets Gradle ל-Android בפרויקט של מפות Google:

  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")
        }
    }

    Groovy

    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")
    }

    Groovy

    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. שומרים את הקובץ.
  7. יוצרים את הקובץ local.defaults.properties בספריית הרמה העליונה, באותה תיקייה שבה נמצא הקובץ secrets.properties, ומוסיפים את הקוד הבא.

    MAPS_API_KEY=DEFAULT_API_KEY

    מטרת הקובץ הזה היא לספק מיקום גיבוי למפתח ה-API, כדי למנוע כשל ב-build אם הקובץ secrets.properties לא נמצא. מצב כזה יכול לקרות אם משכפלים את האפליקציה ממערכת בקרת גרסאות שמשמיטה את secrets.properties, ועדיין לא יצרתם קובץ secrets.properties באופן מקומי כדי לספק את מפתח ה-API.

  8. שומרים את הקובץ.
  9. בקובץ 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. אפשר להשתמש במפתח עם השם הזה כדי לבצע אימות במספר ממשקי API שמבוססים על מפות Google בפלטפורמת Android, כולל Maps SDK for Android. מטעמי תאימות לאחור, ה-API תומך גם בשם com.google.android.maps.v2.API_KEY. השם הקודם מאפשר אימות רק ל-Android Maps API v2. אפליקציה יכולה לציין רק אחד משמות המטא-נתונים של מפתח ה-API. אם מציינים את שניהם, ה-API יוצר חריגה.

  10. ב-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"
    
        // Configure which keys should be ignored by the plugin by providing regular expressions.
        // "sdk.dir" is ignored by default.
        ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore"
        ignoreList.add("sdk.*")       // Ignore all keys matching the regexp "sdk.*"
    }
            

    Groovy

    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"
    
        // Configure which keys should be ignored by the plugin by providing regular expressions.
        // "sdk.dir" is ignored by default.
        ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore"
        ignoreList.add("sdk.*")       // Ignore all keys matching the regexp "sdk.*"
    }
            

שלב 4: מעדכנים את המניפסט של האפליקציה

בקטע הזה מתוארות ההגדרות שצריך להוסיף לקובץ AndroidManifest.xml.

מספר הגרסה של Google Play Services

מוסיפים את ההצהרה הבאה בתוך הרכיב application. כך מוטמעת הגרסה של Google Play Services שבה האפליקציה נוצרה.

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

הרשאת מיקום

אם לאפליקציה שלכם נדרשת גישה למיקום של המשתמש, עליכם לבקש את הרשאת המיקום בקובץ AndroidManifest.xml. האפשרויות הן ACCESS_FINE_LOCATION, שמספקת את המיקום המדויק של המכשיר, ו-ACCESS_COARSE_LOCATION, שמספקת מיקום פחות מדויק. פרטים נוספים זמינים במדריך בנושא נתוני מיקום.

כדי לבקש את ההרשאה ACCESS_FINE_LOCATION, מוסיפים את הקוד הזה לרכיב manifest:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

הרשאה לניהול אחסון חיצוני

אם אתם מטרגטים את גרסה 8.3 ואילך של Google Play Services SDK, אתם לא צריכים את ההרשאה WRITE_EXTERNAL_STORAGE. אם אתם מטרגטים גרסאות קודמות של Google Play Services SDK, עליכם לבקש את ההרשאה WRITE_EXTERNAL_STORAGE ברכיב manifest.

<uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

ספריית Apache HTTP מדור קודם

אם אתם משתמשים ב-com.google.android.gms:play-services-maps:16.0.0 ואילך והאפליקציה שלכם מטרגטת לרמת API 28 (Android 9.0) ואילך, עליכם לכלול את ההצהרה הבאה ברכיב <application> של AndroidManifest.xml. אחרת, מדלגים על ההצהרה הזו.

<uses-library
    android:name="org.apache.http.legacy"
    android:required="false" />

שלב 5: מגדירים מכשיר Android

כדי להריץ אפליקציה שמשתמשת ב-Maps SDK ל-Android, צריך לפרוס אותה במכשיר Android או במהדמ של Android שמבוסס על Android 5.0 ואילך וכולל את ממשקי ה-API של Google.

  • כדי להשתמש במכשיר Android, פועלים לפי ההוראות במאמר הפעלת אפליקציות במכשיר חומרה.
  • כדי להשתמש במהדמנת Android, אפשר ליצור מכשיר וירטואלי ולהתקין את המהדמנת באמצעות מנהל המכשירים הווירטואליים של Android‏ (AVD) שמגיע עם Android Studio.

שלב 6: אפשר לבדוק אם יש תמיכה ב-Play Services

כדי להשתמש ב-Maps SDK ל-Android, צריך להתקין את Google Play Services במכשיר שבו פורסים את האפליקציה. Google מספקת שיטה שאפשר להפעיל מהאפליקציה כדי לבדוק את זה. מידע נוסף זמין במאמר איך בודקים אם Google Play Services מותקן.

השלבים הבאים

אחרי שמגדירים את הפרויקט, אפשר להוסיף מפה.