הפצת אפליקציות ל-Android לבודקים באמצעות Gradle


אתם יכולים לשלב את App Distribution בתהליך ה-build של Android באמצעות הפלאגין של App Distribution ל-Gradle. הפלאגין מאפשר לציין את הבודקים ואת הערות הגרסה בקובץ Gradle של האפליקציה, וכך להגדיר הפצות לסוגי build שונים ולגרסאות שונות של האפליקציה.

במדריך הזה מוסבר איך להפיץ קובצי Android App Bundle‏ (AAB) לבודקים באמצעות הפלאגין של App Distribution ל-Gradle.

‫App Distribution משתלב עם שירות השיתוף הפנימי של אפליקציות ב-Google Play כדי לעבד את קובצי ה-AAB שאתם מעלים ולספק קובצי APK שמותאמים לתצורות המכשירים של הבודקים. הפצת קובצי AAB מאפשרת לכם:

  • להפעיל קובצי APK שעברו אופטימיזציה (שסופקו על ידי Google Play) למכשירים של הבודקים.

  • לגלות ולתקן בעיות שספציפיות למכשיר.

  • לבדוק תכונות של קובצי App Bundle, כמו הפצת פיצ'רים ב-Play ו-Play Asset Delivery.

  • להקטין את גודל ההורדות של הבודקים.

ההרשאות הנדרשות

כדי להעלות קובצי AAB אל App Distribution, צריך לקשר את אפליקציית Firebase לאפליקציה ב-Google Play. כדי לבצע את הפעולות האלה, אתם צריכים את רמת הגישה הנדרשת.

אם אין לכם את הרשאת הגישה הנדרשת ל-Firebase, אתם יכולים לבקש מהבעלים של הפרויקט ב-Firebase להקצות לכם את התפקיד הרלוונטי באמצעות הגדרות ה-IAM במסוף Firebase. אם יש לכם שאלות לגבי הגישה לפרויקט ב-Firebase, כולל איך למצוא או להקצות בעלים, עיינו בשאלות הנפוצות בנושא "הרשאות וגישה לפרויקטים ב-Firebase".

הטבלה הבאה רלוונטית לקישור של אפליקציית Firebase לאפליקציה ב-Google Play, וגם להעלאת קובצי AAB.

פעולה במסוף Firebase הרשאת IAM נדרשת תפקידי IAM שכוללים את ההרשאות הנדרשות כברירת מחדל תפקידים נדרשים נוספים
קישור אפליקציית Firebase לאפליקציה ב-Google Play firebase.playLinks.update אחד מהתפקידים הבאים: גישה לחשבון פיתוח ב-Google Play בתור אדמין
העלאת קובצי AAB אל App Distribution firebaseappdistro.releases.update אחד מהתפקידים הבאים: ––

לפני שמתחילים

  1. אם עדיין לא הוספתם את Firebase לפרויקט Android, אתם צריכים להוסיף אותו. בסוף תהליך העבודה הזה, תהיה לכם אפליקציית Android ב-Firebase בפרויקט Firebase.

    אם אתם לא משתמשים במוצרים אחרים של Firebase, אתם צריכים רק ליצור פרויקט ולרשום את האפליקציה. אם תחליטו להשתמש במוצרים נוספים, הקפידו לבצע את כל השלבים שמפורטים במאמר הוספת Firebase לפרויקט Android.

  2. פותחים את הדף App Distribution במסוף Firebase. כשמוצגת בקשה, בוחרים את פרויקט Firebase, בוחרים את האפליקציה באמצעות הממשק למעבר בין חשבונות ולוחצים על תחילת העבודה.

  3. כדי ליצור קישור לפרויקט Firebase ל-Google Play ולהעלות קובצי AAB, ודאו שהאפליקציה עומדת בדרישות הבאות:

    • האפליקציה ב-Google Play והאפליקציה ל-Android ב-Firebase רשומות עם אותו שם חבילה.

    • האפליקציה ב-Google Play מוגדרת במרכז הבקרה של האפליקציות ומופצת באחד מהמסלולים של Google Play (בדיקה פנימית, בדיקה בקבוצה מוגדרת, בדיקה פתוחה לציבור או סביבת ייצור).

    • הבדיקה של האפליקציה ב-Google Play הסתיימה והאפליקציה פורסמה. האפליקציה פורסמה אם בעמודה סטטוס האפליקציה מוצג אחד מהסטטוסים הבאים: "בדיקה פנימית" (לא "בדיקה פנימית של גרסת טיוטה"), "בדיקה בקבוצה מוגדרת", "בדיקה פתוחה לציבור" או "סביבת ייצור".

  4. מקשרים את אפליקציית Firebase ל-Android לחשבון הפיתוח ב-Google Play:

    1. במסוף Firebase, נכנסים אל הגדרות הפרויקט ובוחרים בכרטיסייה Integrations.

    2. בכרטיס Google Play, לוחצים על Link (קישור).
      אם כבר יש לכם קישורים ל-Google Play, לוחצים על ניהול.

    3. פועלים לפי ההוראות במסך כדי להפעיל את השילוב של App Distribution ובוחרים אילו אפליקציות ל-Android ב-Firebase לקשר ל-Google Play.

    מידע נוסף על קישור ל-Google Play

שלב 1. הגדרת פרויקט Android

  1. בקובץ Gradle ברמת הבסיס (ברמת הפרויקט) (<project>/build.gradle.kts או <project>/build.gradle), מוסיפים את הפלאגין של App Distribution Gradle כתלות:

    Kotlin

    plugins {
        // ...
        id("com.android.application") version "7.3.0" apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id("com.google.gms.google-services") version "4.5.0" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.3.1" apply false
    }

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.5.0' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.3.1' apply false
    }
  2. בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל <project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle), מוסיפים את הפלאגין של App Distribution Gradle:

    Kotlin

    plugins {
      id("com.android.application")
    
      // Make sure that you have the Google services Gradle plugin
      id("com.google.gms.google-services")
    
      // Add the App Distribution Gradle plugin
      id("com.google.firebase.appdistribution")
    }

    Groovy

    plugins {
      id 'com.android.application'
    
      // Make sure that you have the Google services Gradle plugin
      id 'com.google.gms.google-services'
    
      // Add the App Distribution Gradle plugin
      id 'com.google.firebase.appdistribution'
    }
  3. אם אתם עובדים מאחורי שרת proxy או חומת אש של ארגון, הוסיפו את מאפיין המערכת של Java הבא שמאפשר ל-App Distribution להעלות את ההפצות שלכם ל-Firebase:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

שלב 2. אימות באמצעות Firebase

כדי להשתמש בפלאגין של Gradle, קודם צריך לבצע אימות בפרויקט ב-Firebase באחת מהדרכים הבאות. כברירת מחדל, הפלאגין של Gradle מחפש פרטי כניסה מה-CLI של Firebase אם לא משתמשים בשיטת אימות אחרת.

שלב 3. הגדרת מאפייני ההפצה

בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל <project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle), מגדירים את App Distribution על ידי הוספה של קטע firebaseAppDistribution אחד לפחות.

לדוגמה, כדי להפיץ את ה-build של release לבודקים, פועלים לפי ההוראות הבאות:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

אפשר להגדיר את App Distribution לסוגי build וגרסאות מוצר.

לדוגמה, כדי להפיץ גרסאות build של debug ו-release בגרסאות המוצר "הדגמה" ו "מלאה", פועלים לפי ההוראות הבאות:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("debug") {...}
      getByName("release") {...}
  }

  flavorDimensions += "version"
  productFlavors {
      create("demo") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for demo version"
              testers = "demo@testers.com"
          }
      }
      create("full") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for full version"
              testers = "full@testers.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      debug {...}
      release {...}
  }

  flavorDimensions "version"
  productFlavors {
      demo {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for demo version"
              testers="demo@testers.com"
          }
      }
      full {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for full version"
              testers="full@testers.com"
          }
      }
  }

  // ...
}

כדי להגדיר את ההפצה, משתמשים בפרמטרים הבאים:

פרמטרים של גרסת build ב-App Distribution
appId

מזהה האפליקציה ב-Firebase. נדרש רק אם לא התקנתם את הפלאגין של שירותי Google ל-Gradle. אפשר למצוא את מזהה האפליקציה בקובץ google-services.json או במסוף Firebase ב דף ההגדרות הכלליות. הערך בקובץ build.gradle מבטל את הערך שמתקבל מהפלאגין google-services.

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

הנתיב לקובץ ה-JSON של המפתח הפרטי של חשבון השירות. נדרש רק אם משתמשים באימות של חשבון שירות.

artifactType

מציין את סוג הקובץ של האפליקציה. אפשר להגדיר את הערך "AAB" או "APK".

artifactPath

הנתיב המוחלט לקובץ ה-APK או ה-AAB שרוצים להעלות.

releaseNotes או releaseNotesFile

נתוני הגרסה של ה-build הזה.

אפשר לציין את נתוני הגרסה ישירות או את הנתיב לקובץ טקסט פשוט.

testers או testersFile

כתובות האימייל של הבודקים שרוצים להפיץ להם גרסאות build.

אפשר לציין את הבודקים כרשימה של כתובות אימייל שמופרדות בפסיקים:

testers="ali@example.com, bri@example.com, cal@example.com"

אפשר גם לציין את הנתיב לקובץ שמכיל רשימה של כתובות אימייל שמופרדות בפסיקים:

testersFile="/path/to/testers.txt"
groups או groupsFile

קבוצות הבודקים שאליהן רוצים להפיץ גרסאות build (ראו ניהול בודקים). הקבוצות מצוינות באמצעות כתובות אימייל חלופיות של קבוצות, שאפשר למצוא בכרטיסייה Testers (בודקים) במסוף Firebase‏ App Distribution.

אפשר לציין את הקבוצות כרשימה מופרדת בפסיקים של כתובות אימייל חלופיות של קבוצות:

groups="qa-team, android-testers"

אפשר גם לציין את הנתיב לקובץ שמכיל רשימה של כתובות אימייל חלופיות של קבוצות, מופרדות בפסיקים:

groupsFile="/path/to/tester-groups.txt"
testDevices או testDevicesFile

מכשירי הבדיקה שבהם רוצים להריץ את הבדיקות של סוכן App Testing.

אפשר לציין את מכשירי הבדיקה כמפרטי מכשירים ברשימה שמופרדת בנקודה ופסיק:

testDevices="model=shiba,version=34,locale=en,orientation=portrait"

אפשר גם לציין את הנתיב לקובץ שמכיל רשימה של מפרטי מכשירים, שמופרדים בנקודה ופסיק:

testDevicesFile="/path/to/testDevices.txt"
testUsername

שם המשתמש להתחברות אוטומטית במהלך בדיקות של סוכן App Testing.

testPassword או testPasswordFile

הסיסמה להתחברות אוטומטית שמשמשת במהלך בדיקות של סוכן App Testing.

אפשר גם לציין את הנתיב לקובץ טקסט פשוט שמכיל סיסמה:

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

שם המשאב של שדה שם המשתמש להתחברות אוטומטית, שישמש במהלך בדיקות של סוכן App Testing.

testPasswordResource

שם המשאב של שדה הסיסמה להתחברות אוטומטית, שישמש במהלך בדיקות של סוכן App Testing.

testNonBlocking

אם מגדירים את האפשרות הזו כשמריצים בדיקות של סוכן App Testing, הפקודה תתחיל את הבדיקות ואז תחזור מיד במקום לחכות שהן יסתיימו. כדי לראות את תוצאות הבדיקה, צריך להיכנס למסוף Firebase. אם הדגל הזה לא מוגדר, הפקודה תחסום עד שהבדיקות יושלמו, ותצא עם קוד שגיאה אם אחת מהבדיקות תיכשל.

resultsBucket

קטגוריה מותאמת אישית של Google Cloud Storage ‏ (GCS) שבה מאוחסנות תוצאות הבדיקה. אם משאירים את השדה ריק, המערכת משתמשת בקטגוריית ברירת המחדל. הקטגוריה צריכה להיות בבעלות של פרויקט שמופעל בו חיוב, וציון קטגוריה גורם לחיובים על האחסון שבו נעשה שימוש.

stacktrace

הדפסת מעקב אחר מחסנית (stacktrace) של חריגות משתמש. המידע הזה יכול לעזור לכם לפתור בעיות.

שלב 4. הפצת האפליקציה לבודקים

  1. לבסוף, כדי לארוז את אפליקציית הבדיקה ולהזמין בודקים, צריך ליצור את היעדים BUILD-VARIANT ו-appDistributionUploadBUILD-VARIANT באמצעות ה-Gradle wrapper של הפרויקט, כאשר BUILD-VARIANT הוא גרסת המוצר וסוג ה-build האופציונליים שהגדרתם בשלב הקודם. מידע נוסף על גרסאות מוצר זמין במאמר הגדרת וריאנטים של build.

    לדוגמה, כדי להפיץ את האפליקציה באמצעות וריאנט ה-build‏ release, מריצים את הפקודה הבאה:

    ./gradlew bundleRelease appDistributionUploadRelease
    

    לחלופין, אם אימתתם את הזהות באמצעות חשבון Google ולא סיפקתם פרטי כניסה בקובץ ה-build של Gradle, צריך לכלול את המשתנה FIREBASE_TOKEN:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew bundleRelease appDistributionUploadRelease
    
  2. אפשר גם לשנות את הערכים שמוגדרים בקובץ build.gradle על ידי העברת ארגומנטים של שורת הפקודה בפורמט --<property-name>=<property-value>. לדוגמה:

    • כדי להעלות גרסת build לניפוי באגים אל App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
    • כדי להזמין בודקים נוספים או להסיר בודקים קיימים מהפרויקט ב-Firebase:

      ./gradlew appDistributionAddTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      ./gradlew appDistributionRemoveTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"

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

    אפשר גם לציין בודקים באמצעות --file="/path/to/testers.txt" במקום --emails.

    המשימות appDistributionAddTesters ו-appDistributionRemoveTesters מקבלות גם את הארגומנטים הבאים:

    • ‫projectNumber: מספר הפרויקט ב-Firebase.

    • ‫serviceCredentialsFile: הנתיב לקובץ פרטי הכניסה של שירות Google. זה אותו ארגומנט שמשמש את פעולת ההעלאה.

הפלאגין של Gradle מפיק את הקישורים הבאים אחרי העלאת הגרסה. הקישורים האלה עוזרים לכם לנהל קבצים בינאריים ולוודא שלבודקים ולמפתחים אחרים יש את הגרסה הנכונה:

  • ‫firebase_console_uri – קישור למסוף Firebase שבו מוצגת גרסה אחת. אתם יכולים לשתף את הקישור הזה עם מפתחים אחרים בארגון.
  • ‫testing_uri – קישור לגרסה בממשק הבודקים (אפליקציית Android מובנית) שמאפשר לבודקים לראות את הערות הגרסה ולהתקין את האפליקציה במכשיר שלהם. כדי להשתמש בקישור, הבודק צריך גישה לגרסה.
  • ‫binary_download_uri – קישור חתום שמוריד ומתקין ישירות את הקובץ הבינארי של האפליקציה (קובץ APK או AAB). התוקף של הקישור יפוג אחרי שעה.

אחרי שמפיצים את ה-build, הוא זמין במרכז הבקרה של App Distribution במסוף Firebase למשך 150 ימים (חמישה חודשים). כשהגרסה נמצאת במרחק של 30 יום מתאריך התפוגה, הודעת תפוגה מופיעה גם במסוף וגם ברשימת הגרסאות של הבודק במכשיר הבדיקה שלו.

בודקים שלא הוזמנו לבדוק את האפליקציה מקבלים הזמנות באימייל להתחיל, ובודקים קיימים מקבלים התראות באימייל על כך שגרסת build חדשה מוכנה לבדיקה (הוראות להתקנת אפליקציית הבדיקה מפורטות במדריך להגדרת בודקים). במסוף Firebase אפשר לעקוב אחרי הסטטוס של כל בודק – אם הוא אישר את ההזמנה ואם הוא הוריד את האפליקציה.

לבודקים יש 30 ימים לאשר את ההזמנה לבדיקת האפליקציה, לפני שהתוקף שלה פג. כשהתוקף של ההזמנה עומד לפוג בעוד 5 ימים, הודעת תפוגה מופיעה במסוף Firebase לצד הבודק בגרסה. כדי לחדש הזמנה, אפשר לשלוח אותה מחדש באמצעות התפריט הנפתח בשורה של הבודק.

השלבים הבאים