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


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

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

قبل از شروع

  1. اگر قبلاً این کار را نکرده‌اید، ‫Firebase را به پروژه Android خود اضافه کنید.

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

  2. صفحه App Distribution کنسول Firebase را باز کنید. وقتی درخواست شد، پروژه Firebase خود را انتخاب کنید، برنامه خود را بااستفاده از «تعویض‌کننده برنامه» انتخاب کنید، و روی شروع به کار کلیک کنید.

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

  1. در فایل Gradle سطح ریشه (سطح پروژه) (<project>/build.gradle.kts یا <project>/build.gradle)، افزایه Gradle App Distribution را به‌عنوان وابستگی اضافه کنید:

    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.0" 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.0' apply false
    }
  2. در فایل Gradle واحد (سطح برنامه) (معمولاً <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradle)، افزایه Gradle App Distribution را اضافه کنید:

    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. اگر از پراکسی یا دیوار آتش شرکتی استفاده می‌کنید، دارایی سیستم Java زیر را اضافه کنید که 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.gradle)، با افزودن حداقل یک بخش firebaseAppDistribution، App Distribution را پیکربندی کنید.

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

گروه‌های آزمایش‌گری که می‌خواهید نسخه‌های ساخت را برای آن‌ها توزیع کنید (به مدیریت آزمایش‌گران مراجعه کنید). گروه‌ها بااستفاده از نام‌های مستعار گروه مشخص می‌شوند که می‌توانید آن‌ها را در برگه آزمونگران در کنسول 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"

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

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

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

testPassword یا testPasswordFile

گذرواژه ورود خودکار به سیستم که درطول آزمایش‌های عامل «آزمایش برنامه» استفاده می‌شود.

یا می‌توانید مسیر فایل متن ساده حاوی گذرواژه را مشخص کنید:

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

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

testPasswordResource

نام منبع فیلد گذرواژه برای ورود خودکار به سیستم که درطول آزمایش‌های عامل «آزمایش برنامه» استفاده می‌شود.

testNonBlocking

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

resultsBucket

باکت سفارشی Google Cloud Storage (GCS) که نتایج آزمایش در آن ذخیره می‌شود. اگر خالی بگذارید، از دسته‌بندی پیش‌فرض استفاده می‌شود. مالک این دسته‌بندی باید پروژه‌ای با صورت‌حساب فعال باشد و مشخص کردن دسته‌بندی منجر به کسر هزینه صورت‌حساب برای فضای ذخیره‌سازی استفاده‌شده می‌شود.

stacktrace

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

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

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

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

    ./gradlew assembleRelease appDistributionUploadRelease
    

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

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

    • برای بارگذاری ساخت اشکال‌زدایی در 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 شما اضافه شد، می‌توانید او را به نسخه‌های پخش جداگانه اضافه کنید. آزمایش‌گرانی که برداشته می‌شوند دیگر به نسخه‌های پخش در پروژه شما دسترسی نخواهند داشت، اما ممکن است همچنان برای مدت محدودی به نسخه‌های پخش شما دسترسی داشته باشند.

    همچنین می‌توانید آزمایش‌گران را بااستفاده از --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) را بارگیری و نصب می‌کند. پیوند پس‌از یک ساعت منقضی می‌شود.

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

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

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

مراحل بعدی