פלאגין של Secrets Gradle

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

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

הנה דוגמה מלאה לשימוש בפלאגין של Secrets Gradle ל-Android כדי לגשת למפתח API: מידע נוסף זמין במאמר הגדרת פרויקט Android Studio.

התקנה ושימוש

כדי להתקין את הפלאגין 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")
        }
    }

    מגניב

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

    MAPS_API_KEY=DEFAULT_API_KEY

    מטרת הקובץ הזה היא לספק מיקום לגיבוי של מפתח ה-API אם קובץ secrets.properties לא נמצא כדי שגרסאות ה-build לא ייכשלו. הדבר יכול להתרחש אם משכפלים את האפליקציה ממערכת לניהול גרסאות שמושמטת מ-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, כולל SDK של מפות ל-Android. בתאימות לאחור, ה-API גם יש תמיכה בשם com.google.android.maps.v2.API_KEY. המורשת הזו מאפשר אימות רק ל-Android Maps API גרסה 2. האפליקציה יכולה לציין רק אחד משמות המטא-נתונים של מפתח ה-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.*"
    }
            

    מגניב

    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.*"
    }
            

המאמרים הבאים