میتوانید با استفاده از پلاگین 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 را به عنوان یک وابستگی اضافه کنید: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.0.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.4.2' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.0.0' apply false }
در فایل 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' }
اگر پشت پراکسی یا فایروال شرکتی هستید، ویژگی سیستم جاوا زیر را اضافه کنید که به App Distribution امکان میدهد توزیعهای شما را در Firebase آپلود کند:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
مرحله 2. با Firebase احراز هویت
قبل از اینکه بتوانید از پلاگین Gradle استفاده کنید، ابتدا باید با پروژه Firebase خود به یکی از روش های زیر احراز هویت کنید. بهطور پیشفرض، اگر از روش احراز هویت دیگری استفاده نشود، پلاگین Gradle به دنبال اعتبار از Firebase CLI میگردد.
احراز هویت با یک حساب سرویس به شما این امکان را می دهد که به طور انعطاف پذیر از افزونه با سیستم یکپارچه سازی پیوسته (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 مراجعه کنید.
مرحله 3. ویژگی های توزیع خود را پیکربندی کنید
در فایل Gradle ماژول (سطح برنامه) خود (معمولا <project>/<app-module>/build.gradle.kts
یا <project>/<app-module>/build.gradle
)، App 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 را نصب نکرده باشید، الزامی است. میتوانید شناسه برنامه را در فایل 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 بیاموزید.