شما میتوانید App Distribution با استفاده از افزونه App Distribution Gradle در فرآیند ساخت اندروید خود ادغام کنید. این افزونه به شما امکان میدهد آزمایشکنندگان و یادداشتهای انتشار خود را در فایل Gradle برنامه خود مشخص کنید و توزیعها را برای انواع مختلف ساخت و انواع برنامه خود پیکربندی کنید.
این راهنما نحوه توزیع APKها به آزمایشکنندگان را با استفاده از افزونه App Distribution Gradle شرح میدهد.
قبل از اینکه شروع کنی
اگر هنوز Firebase را به پروژه اندروید خود اضافه نکردهاید، آن را اضافه کنید.
اگر از هیچ محصول دیگری از Firebase استفاده نمیکنید، فقط باید یک پروژه ایجاد کنید و برنامه خود را ثبت کنید. با این حال، اگر تصمیم دارید در آینده از محصولات دیگری استفاده کنید، حتماً تمام مراحل موجود در صفحه لینک شده در بالا را انجام دهید.
مرحله ۱. پروژه اندروید خود را راهاندازی کنید
در فایل Gradle سطح ریشه (سطح پروژه) خود (
<project>/build.gradle.ktsیا<project>/build.gradle)، افزونه App Distribution Gradle را به عنوان یک وابستگی اضافه کنید:Kotlin
plugins { // ... id("com.android.application") version "7.3.0" apply false // Make sure that you have the Google services Gradle plugin dependency id("com.google.gms.google-services") version "4.4.4" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
Groovy
plugins { // ... id 'com.android.application' version '7.3.0' apply false // Make sure that you have the Google services Gradle plugin dependency id 'com.google.gms.google-services' version '4.4.4' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.1.1' apply false }
در فایل 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
مرحله ۲. احراز هویت با Firebase
قبل از اینکه بتوانید از افزونه Gradle استفاده کنید، ابتدا باید با پروژه Firebase خود به یکی از روشهای زیر احراز هویت کنید. به طور پیشفرض، افزونه Gradle در صورت عدم استفاده از روش احراز هویت دیگر، به دنبال اعتبارنامههایی از Firebase CLI میگردد.
احراز هویت با یک حساب کاربری سرویس به شما امکان میدهد تا به صورت انعطافپذیر از افزونه با سیستم یکپارچهسازی مداوم (CI) خود استفاده کنید. دو روش برای ارائه اعتبارنامههای حساب کاربری سرویس وجود دارد:
- فایل کلید حساب سرویس خود را به
build.gradleارسال کنید. اگر از قبل فایل کلید حساب سرویس خود را در محیط ساخت خود دارید، ممکن است این روش برای شما مناسب باشد. - متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALSرا طوری تنظیم کنید که به فایل کلید حساب سرویس شما اشاره کند. اگر از قبل Application Default Credentials (ADC) را برای سرویس گوگل دیگری (مثلاً Google Cloud ) پیکربندی کردهاید، ممکن است این روش را ترجیح دهید.
برای تأیید اعتبار با استفاده از اعتبارنامههای حساب سرویس:
- در کنسول Google Cloud ، پروژه خود را انتخاب کنید و یک حساب کاربری سرویس جدید ایجاد کنید.
- نقش مدیر Firebase App Distribution را اضافه کنید.
- یک کلید خصوصی json ایجاد کنید و کلید را به مکانی که برای محیط ساخت شما قابل دسترسی باشد، منتقل کنید. حتماً این فایل را در جایی امن نگه دارید ، زیرا به مدیر پروژه Firebase شما دسترسی به App Distribution را میدهد.
- اگر برنامه خود را بعد از 20 سپتامبر 2019 ایجاد کردهاید، از این مرحله صرف نظر کنید: در کنسول Google APIs، API Firebase App Distribution را فعال کنید. در صورت درخواست، پروژهای را که همنام پروژه 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» مراجعه کنید.
مرحله ۳. پیکربندی ویژگیهای توزیع
در فایل 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 را برای استثنائات کاربر چاپ میکند. این هنگام اشکالزدایی مشکلات مفید است. |
مرحله ۴. برنامه خود را بین آزمایشکنندگان توزیع کنید
در نهایت، برای بستهبندی برنامه آزمایشی خود و دعوت از آزمایشکنندگان، اهداف را بسازید
BUILD-VARIANTوappDistributionUpload BUILD-VARIANTبا بستهبندی Gradle پروژه خود بارگذاری کنید، که در آن BUILD-VARIANT نوع محصول اختیاری و نوع ساختی است که در مرحله قبل پیکربندی کردهاید. برای اطلاعات بیشتر در مورد طعمهای محصول، به پیکربندی انواع ساخت مراجعه کنید.برای مثال، برای توزیع برنامه خود با استفاده از نسخه
release، دستور زیر را اجرا کنید:./gradlew assembleRelease appDistributionUploadRelease
یا اگر با حساب گوگل خود احراز هویت کردهاید و اطلاعات احراز هویت را در فایل Gradle build خود ارائه نکردهاید، متغیر
FIREBASE_TOKENرا وارد کنید:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew assembleRelease appDistributionUploadRelease
همچنین میتوانید مقادیر تعیینشده در فایل
build.gradleخود را با ارسال آرگومانهای خط فرمان به شکل--<property-name>=<property-value>لغو کنید. برای مثال:برای آپلود یک نسخه اشکالزدایی شده به App Distribution :
./gradlew bundleDebug appDistributionUploadDebug --artifactType="APK"برای دعوت از آزمایشکنندگان اضافی یا حذف آزمایشکنندگان موجود از پروژه Firebase خود:
./gradlew appDistributionAddTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"./gradlew appDistributionRemoveTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"پس از اضافه شدن یک تستر به پروژه Firebase خود، میتوانید او را به نسخههای جداگانه اضافه کنید. تسترهایی که حذف میشوند، دیگر به نسخههای پروژه شما دسترسی نخواهند داشت، اما ممکن است همچنان برای مدتی به نسخههای شما دسترسی داشته باشند.
همچنین میتوانید به جای
--emailsبا استفاده از--file="/path/to/testers.txt"آزمایشکنندگان را مشخص کنید.وظایف
appDistributionAddTestersوappDistributionRemoveTestersآرگومانهای زیر را نیز میپذیرند:projectNumber: شماره پروژه Firebase شما.serviceCredentialsFile: مسیر فایل اعتبارنامههای سرویس گوگل شما. این همان آرگومانی است که توسط اکشن آپلود استفاده میشود.
افزونه Gradle پس از آپلود نسخه، لینکهای زیر را در خروجی ارائه میدهد. این لینکها به شما در مدیریت فایلهای باینری و اطمینان از اینکه آزمایشکنندگان و سایر توسعهدهندگان نسخه صحیح را دریافت میکنند، کمک میکنند:
-
firebase_console_uri- لینکی به کنسول Firebase که یک نسخه واحد را نمایش میدهد. میتوانید این لینک را با سایر توسعهدهندگان در سازمان خود به اشتراک بگذارید. -
testing_uri- لینکی به نسخه منتشر شده در محیط تستر (اپلیکیشن اندروید) که به تسترها اجازه میدهد یادداشتهای انتشار را مشاهده کرده و اپلیکیشن را روی دستگاه خود نصب کنند. تستر برای استفاده از لینک، نیاز به دسترسی به نسخه منتشر شده دارد. -
binary_download_uri- لینک امضا شدهای که مستقیماً فایل باینری برنامه (فایل APK یا AAB) را دانلود و نصب میکند. این لینک پس از یک ساعت منقضی میشود.
پس از توزیع نسخه ساخته شده، به مدت ۱۵۰ روز (پنج ماه) در داشبورد App Distribution کنسول Firebase در دسترس قرار میگیرد. هنگامی که ۳۰ روز تا انقضای نسخه ساخته شده باقی مانده باشد، یک اعلان انقضا هم در کنسول و هم در لیست نسخههای ساخته شده توسط آزمایشکننده شما در دستگاه آزمایشیاش ظاهر میشود.
آزمایشکنندگانی که برای آزمایش برنامه دعوت نشدهاند، دعوتنامههای ایمیلی برای شروع دریافت میکنند و آزمایشکنندگان فعلی اعلانهای ایمیلی مبنی بر آماده بودن نسخه جدید برای آزمایش دریافت میکنند (برای دستورالعمل نحوه نصب برنامه آزمایشی، راهنمای راهاندازی آزمایشکننده را بخوانید). میتوانید وضعیت هر آزمایشکننده را در کنسول Firebase زیر نظر داشته باشید - اینکه آیا دعوت را پذیرفتهاند و آیا برنامه را دانلود کردهاند یا خیر.
آزمایشکنندگان 30 روز فرصت دارند تا دعوتنامه را برای آزمایش برنامه قبل از انقضا بپذیرند. وقتی 5 روز به انقضای دعوتنامه باقی مانده باشد، یک اعلان انقضا در کنسول Firebase در کنار آزمایشکننده در نسخه منتشر شده ظاهر میشود. دعوتنامه را میتوان با ارسال مجدد آن با استفاده از منوی کشویی در ردیف آزمایشکننده تمدید کرد.
مراحل بعدی
بازخورد درونبرنامهای را پیادهسازی کنید تا ارسال بازخورد درباره برنامه شما (از جمله اسکرینشاتها) برای آزمایشکنندگان آسان باشد.
بیاموزید که چگونه وقتی نسخههای جدید برنامه شما برای نصب در دسترس است، هشدارهای درون برنامهای را به آزمایشکنندگان خود نمایش دهید.
برای یادگیری نحوه توزیع نسخههای بسته نرمافزاری، گام به گام، از آزمایشگاه کدنویسی بسته نرمافزاری اندروید (Android App Bundle codelab) دیدن کنید.
بهترین شیوهها برای توزیع برنامههای اندروید به آزمایشکنندگان QA با استفاده از CI/CD را بیاموزید.