با استفاده از Gradle، برنامه‌های Android را بین آزمایش‌کنندگان توزیع کنید


شما می‌توانید App Distribution با استفاده از افزونه App Distribution Gradle در فرآیند ساخت اندروید خود ادغام کنید. این افزونه به شما امکان می‌دهد آزمایش‌کنندگان و یادداشت‌های انتشار خود را در فایل Gradle برنامه خود مشخص کنید و توزیع‌ها را برای انواع مختلف ساخت و انواع برنامه خود پیکربندی کنید.

این راهنما نحوه توزیع APKها به آزمایش‌کنندگان را با استفاده از افزونه App Distribution Gradle شرح می‌دهد.

قبل از اینکه شروع کنی

اگر هنوز Firebase را به پروژه اندروید خود اضافه نکرده‌اید، آن را اضافه کنید.

اگر از هیچ محصول دیگری از Firebase استفاده نمی‌کنید، فقط باید یک پروژه ایجاد کنید و برنامه خود را ثبت کنید. با این حال، اگر تصمیم دارید در آینده از محصولات دیگری استفاده کنید، حتماً تمام مراحل موجود در صفحه لینک شده در بالا را انجام دهید.

مرحله ۱. پروژه اندروید خود را راه‌اندازی کنید

  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.4.4" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.1.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.4.4' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.1.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. اگر پشت یک پروکسی یا فایروال شرکتی هستید، ویژگی سیستم جاوای زیر را اضافه کنید که به App Distribution اجازه می‌دهد توزیع‌های شما را در Firebase آپلود کند:

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

مرحله ۲. احراز هویت با Firebase

قبل از اینکه بتوانید از افزونه Gradle استفاده کنید، ابتدا باید با پروژه Firebase خود به یکی از روش‌های زیر احراز هویت کنید. به طور پیش‌فرض، افزونه Gradle در صورت عدم استفاده از روش احراز هویت دیگر، به دنبال اعتبارنامه‌هایی از Firebase CLI می‌گردد.

مرحله ۳. پیکربندی ویژگی‌های توزیع

در فایل Gradle ماژول (سطح برنامه) خود (معمولاً <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradleApp Distribution با اضافه کردن حداقل یک بخش firebaseAppDistribution پیکربندی کنید.

برای مثال، برای توزیع نسخه release به آزمایش‌کنندگان، این دستورالعمل‌ها را دنبال کنید:

Kotlin

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

android {

  // ...

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

  // ...
}

Groovy

android {

  // ...

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

  // ...
}

شما می‌توانید App Distribution برای انواع ساخت و طعم‌های محصول پیکربندی کنید.

برای مثال، برای توزیع نسخه‌های 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"
          }
      }
  }

  // ...
}

برای پیکربندی توزیع از پارامترهای زیر استفاده کنید:

پارامترهای ساخت App Distribution
appId

شناسه برنامه Firebase شما. فقط در صورتی که افزونه Google Services Gradle را نصب نکرده باشید، لازم است. می‌توانید شناسه برنامه را در فایل google-services.json یا در کنسول Firebase در صفحه تنظیمات عمومی پیدا کنید. مقدار موجود در فایل build.gradle شما، مقدار خروجی افزونه google-services را لغو می‌کند.

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

مسیر فایل JSON کلید خصوصی حساب سرویس شما. فقط در صورتی که از احراز هویت حساب سرویس استفاده می‌کنید، لازم است.

artifactType

نوع فایل برنامه شما را مشخص می‌کند. می‌تواند روی "AAB" یا "APK" تنظیم شود.

artifactPath

مسیر مطلق فایل APK یا AAB که می‌خواهید آپلود کنید.

releaseNotes یا releaseNotesFile

یادداشت‌های انتشار برای این نسخه.

می‌توانید یادداشت‌های انتشار را مستقیماً مشخص کنید یا مسیر یک فایل متنی ساده را وارد کنید.

testers یا testersFile

آدرس‌های ایمیل آزمایش‌کنندگانی که می‌خواهید نسخه‌های ساخته‌شده را برایشان توزیع کنید.

شما می‌توانید آزمایش‌کنندگان را به صورت فهرستی از آدرس‌های ایمیل که با کاما از هم جدا شده‌اند، مشخص کنید:

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

یا می‌توانید مسیر فایلی را که حاوی لیستی از آدرس‌های ایمیل جدا شده با کاما است، مشخص کنید:

testersFile="/path/to/testers.txt"
groups یا groupsFile

گروه‌های آزمایش‌کننده‌ای که می‌خواهید نسخه‌های ساخته‌شده را بین آنها توزیع کنید ( به مدیریت آزمایش‌کنندگان مراجعه کنید). گروه‌ها با استفاده از نام‌های مستعار گروه که می‌توانید آن را در تب Testers در کنسول Firebase App Distribution پیدا کنید.

شما می‌توانید گروه‌ها را به صورت لیستی از نام‌های مستعار گروه که با کاما از هم جدا شده‌اند، مشخص کنید:

groups="qa-team, android-testers"

یا می‌توانید مسیر فایلی را که حاوی لیستی از نام‌های مستعار گروه است که با کاما از هم جدا شده‌اند، مشخص کنید:

groupsFile="/path/to/tester-groups.txt"
testDevices یا testDevicesFile

انواع توزیع‌های زیر بخشی از ویژگی بتای تستر خودکار هستند.

دستگاه‌های آزمایشی که می‌خواهید نسخه‌های ساخته‌شده را روی آنها توزیع کنید (به بخش تست‌های خودکار مراجعه کنید).

شما می‌توانید دستگاه‌های آزمایشی را به صورت فهرستی از مشخصات دستگاه که با نقطه ویرگول از هم جدا شده‌اند، مشخص کنید:

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

یا می‌توانید مسیر فایلی را مشخص کنید که حاوی لیستی از مشخصات دستگاه است که با نقطه ویرگول از هم جدا شده‌اند:

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

نام کاربری برای ورود خودکار که در طول تست‌های خودکار استفاده می‌شود.

testPassword یا testPasswordFile

رمز عبور برای ورود خودکار که در طول تست‌های خودکار استفاده می‌شود.

یا می‌توانید مسیر یک فایل متنی ساده حاوی رمز عبور را مشخص کنید:

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

نام منبع برای فیلد نام کاربری جهت ورود خودکار که در طول تست‌های خودکار استفاده می‌شود.

testPasswordResource

نام منبع برای فیلد رمز عبور جهت ورود خودکار که در طول تست‌های خودکار استفاده می‌شود.

testNonBlocking

تست‌های خودکار را به صورت ناهمگام اجرا کنید. برای مشاهده نتایج تست خودکار، به کنسول Firebase مراجعه کنید.

stacktrace

stacktrace را برای استثنائات کاربر چاپ می‌کند. این هنگام اشکال‌زدایی مشکلات مفید است.

مرحله ۴. برنامه خود را بین آزمایش‌کنندگان توزیع کنید

  1. در نهایت، برای بسته‌بندی برنامه آزمایشی خود و دعوت از آزمایش‌کنندگان، اهداف را بسازید BUILD-VARIANT و appDistributionUpload BUILD-VARIANT با بسته‌بندی Gradle پروژه خود بارگذاری کنید، که در آن BUILD-VARIANT نوع محصول اختیاری و نوع ساختی است که در مرحله قبل پیکربندی کرده‌اید. برای اطلاعات بیشتر در مورد طعم‌های محصول، به پیکربندی انواع ساخت مراجعه کنید.

    برای مثال، برای توزیع برنامه خود با استفاده از نسخه release ، دستور زیر را اجرا کنید:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    یا اگر با حساب گوگل خود احراز هویت کرده‌اید و اطلاعات احراز هویت را در فایل Gradle build خود ارائه نکرده‌اید، متغیر FIREBASE_TOKEN را وارد کنید:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. همچنین می‌توانید مقادیر تعیین‌شده در فایل build.gradle خود را با ارسال آرگومان‌های خط فرمان به شکل --<property-name>=<property-value> لغو کنید. برای مثال:

    • برای آپلود یک نسخه اشکال‌زدایی شده به App Distribution :

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • برای دعوت از آزمایش‌کنندگان اضافی یا حذف آزمایش‌کنندگان موجود از پروژه 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 خود، می‌توانید او را به نسخه‌های جداگانه اضافه کنید. تسترهایی که حذف می‌شوند، دیگر به نسخه‌های پروژه شما دسترسی نخواهند داشت، اما ممکن است همچنان برای مدتی به نسخه‌های شما دسترسی داشته باشند.

    همچنین می‌توانید به جای --emails با استفاده از --file="/path/to/testers.txt" آزمایش‌کنندگان را مشخص کنید.

    وظایف appDistributionAddTesters و appDistributionRemoveTesters آرگومان‌های زیر را نیز می‌پذیرند:

    • projectNumber : شماره پروژه Firebase شما.

    • serviceCredentialsFile : مسیر فایل اعتبارنامه‌های سرویس گوگل شما. این همان آرگومانی است که توسط اکشن آپلود استفاده می‌شود.

افزونه Gradle پس از آپلود نسخه، لینک‌های زیر را در خروجی ارائه می‌دهد. این لینک‌ها به شما در مدیریت فایل‌های باینری و اطمینان از اینکه آزمایش‌کنندگان و سایر توسعه‌دهندگان نسخه صحیح را دریافت می‌کنند، کمک می‌کنند:

  • firebase_console_uri - لینکی به کنسول Firebase که یک نسخه واحد را نمایش می‌دهد. می‌توانید این لینک را با سایر توسعه‌دهندگان در سازمان خود به اشتراک بگذارید.
  • testing_uri - لینکی به نسخه منتشر شده در محیط تستر (اپلیکیشن اندروید) که به تسترها اجازه می‌دهد یادداشت‌های انتشار را مشاهده کرده و اپلیکیشن را روی دستگاه خود نصب کنند. تستر برای استفاده از لینک، نیاز به دسترسی به نسخه منتشر شده دارد.
  • binary_download_uri - لینک امضا شده‌ای که مستقیماً فایل باینری برنامه (فایل APK یا AAB) را دانلود و نصب می‌کند. این لینک پس از یک ساعت منقضی می‌شود.

پس از توزیع نسخه ساخته شده، به مدت ۱۵۰ روز (پنج ماه) در داشبورد App Distribution کنسول Firebase در دسترس قرار می‌گیرد. هنگامی که ۳۰ روز تا انقضای نسخه ساخته شده باقی مانده باشد، یک اعلان انقضا هم در کنسول و هم در لیست نسخه‌های ساخته شده توسط آزمایش‌کننده شما در دستگاه آزمایشی‌اش ظاهر می‌شود.

آزمایش‌کنندگانی که برای آزمایش برنامه دعوت نشده‌اند، دعوت‌نامه‌های ایمیلی برای شروع دریافت می‌کنند و آزمایش‌کنندگان فعلی اعلان‌های ایمیلی مبنی بر آماده بودن نسخه جدید برای آزمایش دریافت می‌کنند (برای دستورالعمل نحوه نصب برنامه آزمایشی، راهنمای راه‌اندازی آزمایش‌کننده را بخوانید). می‌توانید وضعیت هر آزمایش‌کننده را در کنسول Firebase زیر نظر داشته باشید - اینکه آیا دعوت را پذیرفته‌اند و آیا برنامه را دانلود کرده‌اند یا خیر.

آزمایش‌کنندگان 30 روز فرصت دارند تا دعوت‌نامه را برای آزمایش برنامه قبل از انقضا بپذیرند. وقتی 5 روز به انقضای دعوت‌نامه باقی مانده باشد، یک اعلان انقضا در کنسول Firebase در کنار آزمایش‌کننده در نسخه منتشر شده ظاهر می‌شود. دعوت‌نامه را می‌توان با ارسال مجدد آن با استفاده از منوی کشویی در ردیف آزمایش‌کننده تمدید کرد.

مراحل بعدی