بااستفاده از افزایه Gradle App Distribution میتوانید App Distribution را در فرایند ساخت Android ادغام کنید. این افزایه به شما امکان میدهد آزمایشگران و یادداشتهای انتشار را در فایل Gradle برنامهتان مشخص کنید و توزیعها را برای انواع ساخت و گونههای مختلف برنامهتان پیکربندی کنید.
این راهنما نحوه توزیع فایلهای APK بین آزمایشگران بااستفاده از App Distribution افزایه Gradle را شرح میدهد.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید.
اگر از هیچیک از محصولات دیگر Firebase استفاده نمیکنید، فقط باید پروژهای ایجاد کنید و برنامهتان را ثبت کنید. اما اگر تصمیم گرفتید در آینده از محصولات دیگری استفاده کنید، حتماً همه مراحل صفحه پیوندشده در بالا را تکمیل کنید.
صفحه App Distribution کنسول Firebase را باز کنید. وقتی درخواست شد، پروژه Firebase خود را انتخاب کنید، برنامه خود را بااستفاده از «تعویضکننده برنامه» انتخاب کنید، و روی شروع به کار کلیک کنید.
مرحله ۱. راهاندازی پروژه Android
در فایل 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 }
در فایل 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' }
اگر از پراکسی یا دیوار آتش شرکتی استفاده میکنید، دارایی سیستم 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 را نصب نکرده باشید. میتوانید «شناسه برنامه» را در
فایل appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile
|
مسیر فایل JSON کلید خصوصی حساب خدمات شما. فقط درصورتی لازم است که از اصالتسنجی حساب سرویس استفاده میکنید. |
artifactType
|
نوع فایل برنامه شما را مشخص میکند. میتواند روی
|
artifactPath
|
مسیر قطعی فایل APK یا AAB که میخواهید بارگذاری کنید. |
releaseNotes یا releaseNotesFile |
یادداشتهای انتشار برای این ساخت. میتوانید یادداشتهای انتشار را مستقیماً یا مسیر فایل نوشتار ساده را مشخص کنید. |
testers یا testersFile |
نشانیهای ایمیل آزمایشگرانی که میخواهید ساختارها را برایشان توزیع کنید. میتوانید آزمایشگران را بهصورت فهرست جداشده با کاما از نشانیهای ایمیل مشخص کنید: testers="ali@example.com, bri@example.com, cal@example.com" یا میتوانید مسیر فایلی را که حاوی فهرست نشانیهای ایمیل جداشده با کاما است مشخص کنید: testersFile="/path/to/testers.txt" |
groups یا groupsFile |
گروههای آزمایشگری که میخواهید نسخههای ساخت را برای آنها توزیع کنید (به
مدیریت آزمایشگران مراجعه کنید).
گروهها بااستفاده از میتوانید گروهها را بهعنوان فهرست جداشده با کاما از نامهای مستعار گروه مشخص کنید: 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
|
پشته ردیابی استثناهای کاربر را چاپ میکند. این کار هنگام عیبیابی مشکلات مفید است. |
مرحله ۴. توزیع برنامه برای آزمایشگران
درنهایت، برای بستهبندی برنامه آزمایشی و دعوت از آزمونگران، هدفهای
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
همچنین میتوانید با ارسال آرگومانهای خط فرمان در قالب
--<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 کنسول در کنار آزمایشگر در نسخه پخش ظاهر میشود. دعوت را میتوان با ارسال مجدد آن ازطریق منو کرکرهای در ردیف آزمایشگر تمدید کرد.
مراحل بعدی
بازخورد درونبرنامهای پیادهسازی کنید تا از آزمونگران درباره برنامهتان بازخورد جمعآوری کنید (ازجمله نماگرفتها).
با نحوه نمایش هشدارهای درونبرنامهای به آزمونگران خود هنگام دردسترس قرار گرفتن ساختارهای جدید برنامهتان برای نصب آشنا شوید.
برای آشنایی با نحوه توزیع نسخههای پخش بسته برنامه گامبهگام، به codelab بسته برنامه Android مراجعه کنید.
با روالهای مطلوب برای توزیع برنامههای Android بین آزمایشگران کنترل کیفیت بااستفاده از CI/CD آشنا شوید.