میتوانید با استفاده از پلاگین App Distribution Gradle، App Distribution در فرآیند ساخت اندروید خود ادغام کنید. این افزونه به شما امکان میدهد آزمایشکنندههای خود را مشخص کنید و یادداشتهایی را در فایل Gradle برنامهتان منتشر کنید و به شما امکان میدهد توزیعها را برای انواع ساخت و انواع مختلف برنامه خود پیکربندی کنید.
این راهنما نحوه توزیع فایلهای APK را برای آزمایشکنندگان با استفاده از افزونه App Distribution Gradle شرح میدهد.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید .
اگر از محصولات Firebase دیگری استفاده نمی کنید، فقط باید یک پروژه ایجاد کنید و برنامه خود را ثبت کنید. با این حال، اگر تصمیم به استفاده از محصولات اضافی در آینده دارید، مطمئن شوید که تمام مراحل را در صفحه لینک بالا انجام دهید.
مرحله 1. پروژه اندروید خود را راه اندازی کنید
در فایل Gradle در سطح ریشه (سطح پروژه) خود (
<project>/build.gradle.kts
یا<project>/build.gradle
)، افزونه App Distribution Gradle را به عنوان یک وابستگی اضافه کنید: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
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.2' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.1.1' apply false }
در فایل Gradle ماژول (سطح برنامه) خود (معمولا
<project>/<app-module>/build.gradle.kts
یا<project>/<app-module>/build.gradle
)، افزونه App Distribution Gradle را اضافه کنید: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") }
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' }
اگر پشت پراکسی یا فایروال شرکتی هستید، ویژگی سیستم جاوا زیر را اضافه کنید که به App Distribution امکان میدهد توزیعهای شما را در Firebase آپلود کند:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
مرحله 2. با Firebase احراز هویت
قبل از اینکه بتوانید از پلاگین Gradle استفاده کنید، ابتدا باید با پروژه Firebase خود به یکی از روش های زیر احراز هویت کنید. بهطور پیشفرض، اگر از روش احراز هویت دیگری استفاده نشود، پلاگین Gradle به دنبال اعتبار از Firebase CLI میگردد.
از اعتبار حساب سرویس Firebase استفاده کنید
احراز هویت با یک حساب سرویس به شما این امکان را می دهد که به طور انعطاف پذیر از افزونه با سیستم یکپارچه سازی پیوسته (CI) خود استفاده کنید. دو روش برای ارائه اعتبار حساب خدمات وجود دارد:
- فایل کلید حساب سرویس خود را به
build.gradle
ارسال کنید. اگر از قبل فایل کلید حساب سرویس خود را در محیط ساخت خود داشته باشید، ممکن است این روش را راحت بیابید. - متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALS
تنظیم کنید تا به فایل کلید حساب سرویس شما اشاره کند. اگر قبلاً Application Default Credentials (ADC) را برای سرویس Google دیگری (مثلاً Google Cloud ) پیکربندی کردهاید، ممکن است این روش را ترجیح دهید.
برای احراز هویت با استفاده از اعتبار حساب سرویس:
- در کنسول Google Cloud ، پروژه خود را انتخاب کرده و یک حساب سرویس جدید ایجاد کنید.
- نقش مدیر Firebase App Distribution را اضافه کنید.
- یک کلید json خصوصی ایجاد کنید و کلید را به مکانی که برای محیط ساخت شما قابل دسترسی است منتقل کنید. مطمئن شوید که این فایل را در جایی امن نگه دارید ، زیرا به سرپرست اجازه دسترسی به App Distribution در پروژه Firebase شما می دهد.
- اگر برنامه خود را بعد از 20 سپتامبر 2019 ایجاد کرده اید، از این مرحله رد شوید: در کنسول Google APIs، Firebase App Distribution API را فعال کنید. هنگامی که از شما خواسته شد، پروژه ای را با همان نام پروژه Firebase خود انتخاب کنید.
اطلاعات حساب سرویس خود را ارائه یا پیدا کنید:
- برای پاس کردن کلید حساب کاربری Gradle، در فایل
build.gradle
، ویژگیserviceCredentialsFile
را روی فایل JSON کلید خصوصی تنظیم کنید. برای تعیین مکان اعتبار خود با ADC، متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALS
را روی مسیر فایل JSON کلید خصوصی تنظیم کنید. به عنوان مثال:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
برای اطلاعات بیشتر در مورد احراز هویت با ADC، ارائه اعتبارنامه به برنامه خود را بخوانید.
- برای پاس کردن کلید حساب کاربری Gradle، در فایل
با استفاده از Firebase CLI وارد شوید
برای اطلاع از نحوه احراز هویت پروژه، به ورود با Firebase CLI مراجعه کنید.
مرحله 3. ویژگی های توزیع خود را پیکربندی کنید
در فایل Gradle ماژول (سطح برنامه) خود (معمولا <project>/<app-module>/build.gradle.kts
یا <project>/<app-module>/build.gradle
)، App Distribution با افزودن حداقل یک بخش firebaseAppDistribution
پیکربندی کنید.
به عنوان مثال، برای توزیع نسخه release
بین آزمایشکنندگان، دستورالعملهای زیر را دنبال کنید:
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" } } } // ... }
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
بیلدها در طعمهای «دمو» و «کامل»، این دستورالعملها را دنبال کنید:
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" } } } // ... }
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;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 را برای استثناهای کاربر چاپ می کند. این در هنگام اشکال زدایی مشکلات مفید است. |
مرحله 4. برنامه خود را بین آزمایش کنندگان توزیع کنید
در نهایت، برای بسته بندی برنامه آزمایشی خود و دعوت از آزمایش کنندگان، اهداف را بسازید
BUILD-VARIANT
وappDistributionUpload BUILD-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) را دانلود و نصب می کند. لینک بعد از یک ساعت منقضی می شود.
هنگامی که ساخت خود را توزیع کردید، به مدت 150 روز (پنج ماه) در داشبورد App Distribution کنسول Firebase در دسترس قرار می گیرد. وقتی ساخت 30 روز از انقضا میگذرد، یک اخطار انقضا هم در کنسول و هم در فهرست ساختهای آزمایشکننده شما در دستگاه آزمایشی ظاهر میشود.
آزمایشکنندگانی که برای آزمایش برنامه دعوت نشدهاند، دعوتنامههای ایمیلی را برای شروع دریافت میکنند، و آزمایشکنندگان موجود اعلانهای ایمیلی مبنی بر آماده بودن ساخت جدید برای آزمایش دریافت میکنند ( راهنمای راهاندازی آزمایشکننده را برای دستورالعملهای نصب برنامه آزمایشی بخوانید). میتوانید وضعیت هر آزمایشکننده را کنترل کنید - آیا دعوتنامه را پذیرفتهاند و آیا برنامه را دانلود کردهاند یا خیر - در کنسول Firebase .
آزمایشکنندگان 30 روز فرصت دارند تا قبل از انقضا، دعوتنامه را برای آزمایش برنامه بپذیرند. وقتی دعوتنامه 5 روز از تاریخ انقضا میگذرد، در کنسول Firebase در کنار آزمایشکننده در نسخهای که منتشر میشود، اعلان انقضا ظاهر میشود. یک دعوت نامه را می توان با ارسال مجدد آن با استفاده از منوی کشویی در ردیف آزمایشگر تمدید کرد.
مراحل بعدی
بازخورد درونبرنامهای را پیادهسازی کنید تا آزمایشکنندگان بتوانند بازخورد درباره برنامه شما (از جمله تصاویر صفحه) ارسال کنند.
با نحوه نمایش هشدارهای درونبرنامهای به آزمایشکنندگان خود، هنگامی که ساختهای جدید برنامهتان برای نصب در دسترس هستند، آشنا شوید.
برای آشنایی با نحوه توزیع نسخههای بسته نرمافزاری گام به گام، از نرمافزار Android App Bundle دیدن کنید.
بهترین روشها را برای توزیع برنامههای Android به آزمایشکنندگان QA با استفاده از CI/CD بیاموزید.
میتوانید با استفاده از پلاگین App Distribution Gradle، App Distribution در فرآیند ساخت اندروید خود ادغام کنید. این افزونه به شما امکان میدهد آزمایشکنندههای خود را مشخص کنید و یادداشتهایی را در فایل Gradle برنامهتان منتشر کنید و به شما امکان میدهد توزیعها را برای انواع ساخت و انواع مختلف برنامه خود پیکربندی کنید.
این راهنما نحوه توزیع فایلهای APK را برای آزمایشکنندگان با استفاده از افزونه App Distribution Gradle شرح میدهد.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید .
اگر از محصولات Firebase دیگری استفاده نمی کنید، فقط باید یک پروژه ایجاد کنید و برنامه خود را ثبت کنید. با این حال، اگر تصمیم به استفاده از محصولات اضافی در آینده دارید، مطمئن شوید که تمام مراحل را در صفحه لینک بالا انجام دهید.
مرحله 1. پروژه اندروید خود را راه اندازی کنید
در فایل Gradle در سطح ریشه (سطح پروژه) خود (
<project>/build.gradle.kts
یا<project>/build.gradle
)، افزونه App Distribution Gradle را به عنوان یک وابستگی اضافه کنید: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
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.2' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.1.1' apply false }
در فایل Gradle ماژول (سطح برنامه) خود (معمولا
<project>/<app-module>/build.gradle.kts
یا<project>/<app-module>/build.gradle
)، افزونه App Distribution Gradle را اضافه کنید: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") }
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' }
اگر پشت پراکسی یا فایروال شرکتی هستید، ویژگی سیستم جاوا زیر را اضافه کنید که به App Distribution امکان میدهد توزیعهای شما را در Firebase آپلود کند:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
مرحله 2. با Firebase احراز هویت
قبل از اینکه بتوانید از پلاگین Gradle استفاده کنید، ابتدا باید با پروژه Firebase خود به یکی از روش های زیر احراز هویت کنید. بهطور پیشفرض، اگر از روش احراز هویت دیگری استفاده نشود، پلاگین Gradle به دنبال اعتبار از Firebase CLI میگردد.
از اعتبار حساب سرویس Firebase استفاده کنید
احراز هویت با یک حساب سرویس به شما این امکان را می دهد که به طور انعطاف پذیر از افزونه با سیستم یکپارچه سازی پیوسته (CI) خود استفاده کنید. دو روش برای ارائه اعتبار حساب خدمات وجود دارد:
- فایل کلید حساب سرویس خود را به
build.gradle
ارسال کنید. اگر از قبل فایل کلید حساب سرویس خود را در محیط ساخت خود داشته باشید، ممکن است این روش را راحت بیابید. - متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALS
تنظیم کنید تا به فایل کلید حساب سرویس شما اشاره کند. اگر قبلاً Application Default Credentials (ADC) را برای سرویس Google دیگری (مثلاً Google Cloud ) پیکربندی کردهاید، ممکن است این روش را ترجیح دهید.
برای احراز هویت با استفاده از اعتبار حساب سرویس:
- در کنسول Google Cloud ، پروژه خود را انتخاب کرده و یک حساب سرویس جدید ایجاد کنید.
- نقش مدیر Firebase App Distribution را اضافه کنید.
- یک کلید json خصوصی ایجاد کنید و کلید را به مکانی که برای محیط ساخت شما قابل دسترسی است منتقل کنید. مطمئن شوید که این فایل را در جایی امن نگه دارید ، زیرا به سرپرست اجازه دسترسی به App Distribution در پروژه Firebase شما می دهد.
- اگر برنامه خود را بعد از 20 سپتامبر 2019 ایجاد کرده اید، از این مرحله رد شوید: در کنسول Google APIs، Firebase App Distribution API را فعال کنید. هنگامی که از شما خواسته شد، پروژه ای را با همان نام پروژه Firebase خود انتخاب کنید.
اطلاعات حساب سرویس خود را ارائه یا پیدا کنید:
- برای پاس کردن کلید حساب کاربری Gradle، در فایل
build.gradle
، ویژگیserviceCredentialsFile
را روی فایل JSON کلید خصوصی تنظیم کنید. برای تعیین مکان اعتبار خود با ADC، متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALS
را روی مسیر فایل JSON کلید خصوصی تنظیم کنید. به عنوان مثال:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
برای اطلاعات بیشتر در مورد احراز هویت با ADC، ارائه اعتبارنامه به برنامه خود را بخوانید.
- برای پاس کردن کلید حساب کاربری Gradle، در فایل
با استفاده از Firebase CLI وارد شوید
برای اطلاع از نحوه احراز هویت پروژه، به ورود با Firebase CLI مراجعه کنید.
مرحله 3. ویژگی های توزیع خود را پیکربندی کنید
در فایل Gradle ماژول (سطح برنامه) خود (معمولا <project>/<app-module>/build.gradle.kts
یا <project>/<app-module>/build.gradle
)، App Distribution با افزودن حداقل یک بخش firebaseAppDistribution
پیکربندی کنید.
به عنوان مثال، برای توزیع نسخه release
بین آزمایشکنندگان، دستورالعملهای زیر را دنبال کنید:
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" } } } // ... }
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
بیلدها در طعمهای «دمو» و «کامل»، این دستورالعملها را دنبال کنید:
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" } } } // ... }
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;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 را برای استثنائات کاربر چاپ می کند. این در هنگام اشکال زدایی مسائل مفید است. |
مرحله 4. برنامه خود را برای آزمایش کنندگان توزیع کنید
در آخر ، برای بسته بندی برنامه تست خود و دعوت از آزمایش کنندگان ، اهداف را بسازید
BUILD-VARIANT
وappDistributionUpload BUILD-VARIANT
با بسته بندی Gradle Project خود ، که در آن ساختار 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
- پیوندی برای انتشار در Tester Experience (برنامه بومی اندروید) که به آزمایش کنندگان اجازه می دهد یادداشت های انتشار را مشاهده کنند و برنامه را روی دستگاه خود نصب کنند. تستر برای استفاده از لینک نیاز به دسترسی به نسخه دارد. -
binary_download_uri
- پیوندی امضا شده که مستقیماً برنامه باینری برنامه (پرونده APK یا AAB) را بارگیری و نصب می کند. پیوند پس از یک ساعت منقضی می شود.
پس از توزیع ساخت و ساز خود ، در داشبورد App Distribution کنسول Firebase به مدت 150 روز (پنج ماه) در دسترس قرار می گیرد. هنگامی که ساخت و ساز 30 روز از زمان انقضا است ، یک اعلامیه انقضا در کنسول و لیست تستر شما از ساخت در دستگاه تست آنها ظاهر می شود.
آزمایش کننده هایی که برای آزمایش برنامه دعوت نشده اند ، دعوت نامه های ایمیل را برای شروع کار دریافت می کنند ، و آزمایش کنندگان موجود اعلان های ایمیل را دریافت می کنند که یک ساخت جدید آماده آزمایش است ( راهنمای تنظیم تستر را برای دستورالعمل نحوه نصب برنامه تست بخوانید). شما می توانید وضعیت هر تستر را کنترل کنید-آیا آنها دعوت را پذیرفتند و اینکه آیا برنامه را در کنسول Firebase بارگیری کرده اند.
آزمایش کنندگان 30 روز فرصت دارند تا دعوت نامه ای را برای آزمایش برنامه قبل از انقضا بپذیرند. هنگامی که یک دعوت 5 روز از زمان انقضا است ، یک اعلامیه انقضا در کنسول Firebase در کنار تستر در هنگام انتشار ظاهر می شود. با تغییر مجدد آن با استفاده از منوی کشویی در ردیف تستر ، می توان دعوت را تجدید کرد.
مراحل بعدی
بازخورد درون برنامه ای را پیاده سازی کنید تا آزمایش کنندگان بتوانند بازخورد در مورد برنامه خود (از جمله تصاویر) را برای آزمایش کنندگان آسان کنند.
بیاموزید که وقتی ساختهای جدید برنامه شما برای نصب در دسترس است ، هشدارهای درون برنامه ای را به آزمایش کنندگان خود نمایش دهید.
برای یادگیری نحوه توزیع نسخه بسته های برنامه به صورت مرحله به مرحله ، از برنامه Android CodeLab CodeLab بازدید کنید.
بهترین شیوه ها را برای توزیع برنامه های Android به آزمایش کنندگان QA با استفاده از CI/CD بیاموزید.
می توانید با استفاده از افزونه Gradle App Distribution Gradle ، App Distribution در فرآیند ساخت اندرویدی خود ادغام کنید. این افزونه به شما امکان می دهد آزمایش کنندگان خود را مشخص کرده و یادداشت ها را در پرونده Gradle برنامه خود منتشر کنید ، به شما امکان می دهد توزیع ها را برای انواع مختلف ساخت و انواع برنامه خود پیکربندی کنید.
این راهنما نحوه توزیع APK ها را به آزمایش کنندگان با استفاده از افزونه Gradle App Distribution توضیح می دهد.
قبل از شروع
اگر قبلاً این کار را نکرده اید ، Firebase را به پروژه Android خود اضافه کنید .
اگر از سایر محصولات Firebase استفاده نمی کنید ، فقط باید یک پروژه ایجاد کنید و برنامه خود را ثبت کنید. با این حال ، اگر تصمیم دارید در آینده از محصولات اضافی استفاده کنید ، حتماً تمام مراحل موجود در صفحه مرتبط با بالا را انجام دهید.
مرحله 1. پروژه Android خود را تنظیم کنید
در پرونده درجه ریشه (سطح پروژه) خود (
<project>/build.gradle.kts
یا<project>/build.gradle
) خود را اضافه کنید ، افزونه Gradle App Distribution را به عنوان وابستگی اضافه کنید: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
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.2' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.1.1' apply false }
در پرونده Gradle ماژول (سطح برنامه) خود (معمولاً
<project>/<app-module>/build.gradle.kts
یا<project>/<app-module>/build.gradle
) ، افزونه Gradle App Distribution اضافه کنید: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") }
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' }
اگر در پشت پروکسی یا فایروال شرکت هستید ، ویژگی سیستم جاوا زیر را اضافه کنید که App Distribution قادر می سازد توزیع های خود را در Firebase بارگذاری کند:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
مرحله 2. با Firebase تأیید کنید
قبل از اینکه بتوانید از افزونه Gradle استفاده کنید ، ابتدا باید با پروژه Firebase خود به یکی از روش های زیر تأیید کنید. به طور پیش فرض ، افزونه Gradle در صورت استفاده از روش تأیید هویت دیگر ، به دنبال اعتبارنامه از CLI Firebase CLI است.
از اعتبارنامه حساب خدمات Firebase استفاده کنید
تأیید اعتبار با یک حساب سرویس به شما امکان می دهد با سیستم ادغام مداوم (CI) خود از افزونه استفاده کنید. دو روش برای ارائه اعتبار حساب خدمات وجود دارد:
- فایل کلید حساب خدمات خود را به
build.gradle
منتقل کنید. اگر از قبل فایل کلید حساب خدمات خود را در محیط ساخت خود داشته باشید ، ممکن است این روش را راحت پیدا کنید. - متغیر محیط
GOOGLE_APPLICATION_CREDENTIALS
تنظیم کنید تا به پرونده کلید حساب خدمات خود اشاره کنید. اگر قبلاً اعتبار پیش فرض برنامه (ADC) را برای سرویس Google دیگر (به عنوان مثال ، Google Cloud ) تنظیم کنید ، ممکن است این روش را ترجیح دهید.
برای تأیید اعتبار با استفاده از اعتبار حساب خدمات:
- در کنسول Google Cloud ، پروژه خود را انتخاب کرده و یک حساب خدمات جدید ایجاد کنید.
- نقش مدیر Firebase App Distribution را اضافه کنید.
- یک کلید JSON خصوصی ایجاد کنید و کلید را به مکانی که برای محیط ساخت شما قابل دسترسی است منتقل کنید. حتماً این پرونده را در جایی ایمن نگه دارید ، زیرا دسترسی به مدیر به App Distribution در پروژه Firebase شما را اعطا می کند.
- اگر برنامه خود را بعد از 20 سپتامبر 2019 ایجاد کردید ، از این مرحله پرش کنید: در کنسول Google APIS ، API Firebase App Distribution فعال کنید. در صورت درخواست ، پروژه را با همان نام پروژه Firebase خود انتخاب کنید.
اعتبار حساب خدمات خود را ارائه یا پیدا کنید:
- برای عبور از GRADLE کلید حساب خدمات خود ، در پرونده
build.gradle
خود ،serviceCredentialsFile
را در پرونده Key Key JSON تنظیم کنید. برای یافتن اعتبار خود با ADC ، متغیر محیط
GOOGLE_APPLICATION_CREDENTIALS
در مسیر پرونده Key Key JSON تنظیم کنید. به عنوان مثال:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
برای کسب اطلاعات بیشتر در مورد تأیید اعتبار با ADC ، ارائه اعتبار برای برنامه خود را بخوانید.
- برای عبور از GRADLE کلید حساب خدمات خود ، در پرونده
با استفاده از CLI Firebase وارد شوید
برای راهنمایی در مورد چگونگی تأیید اعتبار پروژه خود ، با Firebase CLI وارد شوید .
مرحله 3. خصوصیات توزیع خود را پیکربندی کنید
در پرونده Gradle ماژول (سطح برنامه) خود (معمولاً <project>/<app-module>/build.gradle.kts
یا <project>/<app-module>/build.gradle
) ، با اضافه کردن حداقل یک بخش firebaseAppDistribution
App Distribution پیکربندی کنید.
به عنوان مثال ، برای توزیع ساخت release
به آزمایش کنندگان ، این دستورالعمل ها را دنبال کنید ::
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" } } } // ... }
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
ساخت در "نسخه ی نمایشی" و "کامل" طعم های محصول ، این دستورالعمل ها را دنبال کنید:
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" } } } // ... }
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;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 را برای استثنائات کاربر چاپ می کند. این در هنگام اشکال زدایی مسائل مفید است. |
مرحله 4. برنامه خود را برای آزمایش کنندگان توزیع کنید
در آخر ، برای بسته بندی برنامه تست خود و دعوت از آزمایش کنندگان ، اهداف را بسازید
BUILD-VARIANT
وappDistributionUpload BUILD-VARIANT
با بسته بندی Gradle Project خود ، که در آن ساختار 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
- پیوندی برای انتشار در Tester Experience (برنامه بومی اندروید) که به آزمایش کنندگان اجازه می دهد یادداشت های انتشار را مشاهده کنند و برنامه را روی دستگاه خود نصب کنند. تستر برای استفاده از لینک نیاز به دسترسی به نسخه دارد. -
binary_download_uri
- پیوندی امضا شده که مستقیماً برنامه باینری برنامه (پرونده APK یا AAB) را بارگیری و نصب می کند. پیوند پس از یک ساعت منقضی می شود.
پس از توزیع ساخت و ساز خود ، در داشبورد App Distribution کنسول Firebase به مدت 150 روز (پنج ماه) در دسترس قرار می گیرد. هنگامی که ساخت و ساز 30 روز از زمان انقضا است ، یک اعلامیه انقضا در کنسول و لیست تستر شما از ساخت در دستگاه تست آنها ظاهر می شود.
آزمایش کننده هایی که برای آزمایش برنامه دعوت نشده اند ، دعوت نامه های ایمیل را برای شروع کار دریافت می کنند ، و آزمایش کنندگان موجود اعلان های ایمیل را دریافت می کنند که یک ساخت جدید آماده آزمایش است ( راهنمای تنظیم تستر را برای دستورالعمل نحوه نصب برنامه تست بخوانید). شما می توانید وضعیت هر تستر را کنترل کنید-آیا آنها دعوت را پذیرفتند و اینکه آیا برنامه را در کنسول Firebase بارگیری کرده اند.
آزمایش کنندگان 30 روز فرصت دارند تا دعوت نامه ای را برای آزمایش برنامه قبل از انقضا بپذیرند. هنگامی که یک دعوت 5 روز از زمان انقضا است ، یک اعلامیه انقضا در کنسول Firebase در کنار تستر در هنگام انتشار ظاهر می شود. با تغییر مجدد آن با استفاده از منوی کشویی در ردیف تستر ، می توان دعوت را تجدید کرد.
مراحل بعدی
بازخورد درون برنامه ای را پیاده سازی کنید تا آزمایش کنندگان بتوانند بازخورد در مورد برنامه خود (از جمله تصاویر) را برای آزمایش کنندگان آسان کنند.
بیاموزید که وقتی ساختهای جدید برنامه شما برای نصب در دسترس است ، هشدارهای درون برنامه ای را به آزمایش کنندگان خود نمایش دهید.
برای یادگیری نحوه توزیع نسخه بسته های برنامه به صورت مرحله به مرحله ، از برنامه Android CodeLab CodeLab بازدید کنید.
بهترین شیوه ها را برای توزیع برنامه های Android به آزمایش کنندگان QA با استفاده از CI/CD بیاموزید.
می توانید با استفاده از افزونه Gradle App Distribution Gradle ، App Distribution در فرآیند ساخت اندرویدی خود ادغام کنید. این افزونه به شما امکان می دهد آزمایش کنندگان خود را مشخص کرده و یادداشت ها را در پرونده Gradle برنامه خود منتشر کنید ، به شما امکان می دهد توزیع ها را برای انواع مختلف ساخت و انواع برنامه خود پیکربندی کنید.
این راهنما نحوه توزیع APK ها را به آزمایش کنندگان با استفاده از افزونه Gradle App Distribution توضیح می دهد.
قبل از شروع
اگر قبلاً این کار را نکرده اید ، Firebase را به پروژه Android خود اضافه کنید .
اگر از سایر محصولات Firebase استفاده نمی کنید ، فقط باید یک پروژه ایجاد کنید و برنامه خود را ثبت کنید. با این حال ، اگر تصمیم دارید در آینده از محصولات اضافی استفاده کنید ، حتماً تمام مراحل موجود در صفحه مرتبط با بالا را انجام دهید.
مرحله 1. پروژه Android خود را تنظیم کنید
در پرونده درجه ریشه (سطح پروژه) خود (
<project>/build.gradle.kts
یا<project>/build.gradle
) خود را اضافه کنید ، افزونه Gradle App Distribution را به عنوان وابستگی اضافه کنید: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
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.2' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.1.1' apply false }
در پرونده Gradle ماژول (سطح برنامه) خود (معمولاً
<project>/<app-module>/build.gradle.kts
یا<project>/<app-module>/build.gradle
) ، افزونه Gradle App Distribution اضافه کنید: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") }
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' }
اگر در پشت پروکسی یا فایروال شرکت هستید ، ویژگی سیستم جاوا زیر را اضافه کنید که App Distribution قادر می سازد توزیع های خود را در Firebase بارگذاری کند:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
مرحله 2. با Firebase تأیید کنید
قبل از اینکه بتوانید از افزونه Gradle استفاده کنید ، ابتدا باید با پروژه Firebase خود به یکی از روش های زیر تأیید کنید. به طور پیش فرض ، افزونه Gradle در صورت استفاده از روش تأیید هویت دیگر ، به دنبال اعتبارنامه از CLI Firebase CLI است.
از اعتبارنامه حساب خدمات Firebase استفاده کنید
تأیید اعتبار با یک حساب سرویس به شما امکان می دهد با سیستم ادغام مداوم (CI) خود از افزونه استفاده کنید. دو روش برای ارائه اعتبار حساب خدمات وجود دارد:
- فایل کلید حساب خدمات خود را به
build.gradle
منتقل کنید. اگر از قبل فایل کلید حساب خدمات خود را در محیط ساخت خود داشته باشید ، ممکن است این روش را راحت پیدا کنید. - متغیر محیط
GOOGLE_APPLICATION_CREDENTIALS
تنظیم کنید تا به پرونده کلید حساب خدمات خود اشاره کنید. اگر قبلاً اعتبار پیش فرض برنامه (ADC) را برای سرویس Google دیگر (به عنوان مثال ، Google Cloud ) تنظیم کنید ، ممکن است این روش را ترجیح دهید.
برای تأیید اعتبار با استفاده از اعتبار حساب خدمات:
- در کنسول Google Cloud ، پروژه خود را انتخاب کرده و یک حساب خدمات جدید ایجاد کنید.
- نقش مدیر Firebase App Distribution را اضافه کنید.
- یک کلید JSON خصوصی ایجاد کنید و کلید را به مکانی که برای محیط ساخت شما قابل دسترسی است منتقل کنید. حتماً این پرونده را در جایی ایمن نگه دارید ، زیرا دسترسی به مدیر به App Distribution در پروژه Firebase شما را اعطا می کند.
- اگر برنامه خود را بعد از 20 سپتامبر 2019 ایجاد کردید ، از این مرحله پرش کنید: در کنسول Google APIS ، API Firebase App Distribution فعال کنید. در صورت درخواست ، پروژه را با همان نام پروژه Firebase خود انتخاب کنید.
اعتبار حساب خدمات خود را ارائه یا پیدا کنید:
- برای عبور از GRADLE کلید حساب خدمات خود ، در پرونده
build.gradle
خود ،serviceCredentialsFile
را در پرونده Key Key JSON تنظیم کنید. برای یافتن اعتبار خود با ADC ، متغیر محیط
GOOGLE_APPLICATION_CREDENTIALS
در مسیر پرونده Key Key JSON تنظیم کنید. به عنوان مثال:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
برای کسب اطلاعات بیشتر در مورد تأیید اعتبار با ADC ، ارائه اعتبار برای برنامه خود را بخوانید.
- برای عبور از GRADLE کلید حساب خدمات خود ، در پرونده
با استفاده از CLI Firebase وارد شوید
برای راهنمایی در مورد چگونگی تأیید اعتبار پروژه خود ، با Firebase CLI وارد شوید .
Step 3. Configure your distribution properties
In your module (app-level) Gradle file (usually <project>/<app-module>/build.gradle.kts
or <project>/<app-module>/build.gradle
), configure App Distribution by adding at least one firebaseAppDistribution
section.
For example, to distribute the release
build to testers, follow these instructions::
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" } } } // ... }
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="APK" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
You can configure App Distribution for build types and product flavors .
For example, to distribute debug
and release
builds in "demo" and "full" product flavors, follow these instructions:
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" } } } // ... }
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" } } } // ... }
Use the following parameters to configure the distribution:
App Distribution Build Parameters | |
---|---|
appId | Your app's Firebase App ID. Required only if you don't have the Google Services Gradle plugin installed. You can find the App ID in the appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | The path to your service account private key JSON file. Required only if you use service account authentication. |
artifactType | Specifies your app's file type. Can be set to |
artifactPath | Absolute path to the APK or AAB file you want to upload. |
releaseNotes or releaseNotesFile | Release notes for this build. You can either specify the release notes directly or the path to a plain text file. |
testers or testersFile | The email addresses of the testers you want to distribute builds to. You can specify the testers as a comma-separated list of email addresses: testers="ali@example.com, bri@example.com, cal@example.com" Or, you can specify the path to a file containing a comma-separated list of email addresses: testersFile="/path/to/testers.txt" |
groups or groupsFile | The tester groups you want to distribute builds to (see Manage testers ). Groups are specified using You can specify the groups as a comma-separated list of group aliases: groups="qa-team, android-testers" Or, you can specify the path to a file containing a comma-separated list of group aliases: groupsFile="/path/to/tester-groups.txt" |
testDevices or testDevicesFile | The following distribution types are part of the Automated tester beta feature . The test devices you want to distribute builds to (see Automated tests ). You can specify the test devices as a semicolon-separated list of device specifications: testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait" Or, you can specify the path to a file containing a semicolon-separated list of device specifications: testDevicesFile="/path/to/testDevices.txt" |
testUsername | The username for automatic login to be used during automated tests . |
testPassword or testPasswordFile | The password for automatic login to be used during automated tests . Or, you can specify the path to a plain text file containing a password: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource | Resource name for the username field for automatic login to be used during automated tests . |
testPasswordResource | Resource name for the password field for automatic login to be used during automated tests . |
testNonBlocking | Run automated tests asynchronously. Visit the Firebase console for the automatic test results. |
stacktrace | Prints out the stacktrace for user exceptions. This is helpful when debugging issues. |
Step 4. Distribute your app to testers
Finally, to package your test app and invite testers, build the targets
BUILD-VARIANT
andappDistributionUpload BUILD-VARIANT
with your project's Gradle wrapper, where BUILD-VARIANT is the optional product flavor and build type you configured in the previous step. For more information about product flavors, see Configure build variants .For example, to distribute your app using the
release
build variant, run the following command:./gradlew assembleRelease appDistributionUploadRelease
Or, if you authenticated with your Google Account and didn't provide credentials in your Gradle build file, include the
FIREBASE_TOKEN
variable:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew assembleRelease appDistributionUploadRelease
You can also override the values set in your
build.gradle
file by passing command line arguments in the form of--<property-name>=<property-value>
. به عنوان مثال:To upload a debug build to App Distribution :
./gradlew bundleDebug appDistributionUploadDebug --artifactType="APK"
To invite additional testers or remove existing testers from your Firebase project:
./gradlew appDistributionAddTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
./gradlew appDistributionRemoveTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
Once a tester has been added to your Firebase project, you can add them to individual releases. Testers who are removed will no longer have access to releases in your project, but may still retain access to your releases for a window of time.
You can also specify testers using
--file="/path/to/testers.txt"
instead of--emails
.The
appDistributionAddTesters
andappDistributionRemoveTesters
tasks also accept the following arguments:projectNumber
: Your Firebase project number.serviceCredentialsFile
: The path to your Google service credentials file. This is the same argument used by the upload action.
The Gradle plugin outputs the following links after the release upload. These links help you manage binaries and ensure that testers and other developers have the right release:
-
firebase_console_uri
- A link to the Firebase console displaying a single release. You can share this link with other developers in your org. -
testing_uri
- A link to the release in the tester experience (Android native app) that lets testers view release notes and install the app onto their device. The tester needs access to the release in order to use the link. -
binary_download_uri
- A signed link that directly downloads and installs the app binary (APK or AAB file). The link expires after one hour.
Once you distribute your build, it becomes available in the App Distribution dashboard of the Firebase console for 150 days (five months). When the build is 30 days from expiring, an expiration notice appears in both the console and your tester's list of builds on their test device.
Testers who haven't been invited to test the app receive email invitations to get started, and existing testers receive email notifications that a new build is ready to test (read the tester set up guide for instructions on how to install the test app). You can monitor the status of each tester-whether they accepted the invitation and whether they downloaded the app-in the Firebase console.
Testers have 30 days to accept an invitation to test the app before it expires. When an invitation is 5 days from expiring, an expiration notice appears in the Firebase console next to the tester on a release. An invitation can be renewed by resending it using the drop-down menu on the tester row.
مراحل بعدی
Implement in-app feedback to make it easy for testers to send feedback about your app (including screenshots).
Learn how to display in-app alerts to your testers when new builds of your app are available to install.
Visit the Android App Bundle codelab to learn how to distribute app bundle releases step by step.
Learn best practices for distributing Android apps to QA testers using CI/CD .