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


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

این راهنما نحوه توزیع Android App Bundles (AAB) را با استفاده از پلاگین App Distribution Gradle برای آزمایش‌کنندگان توضیح می‌دهد.

App Distribution با سرویس اشتراک‌گذاری برنامه داخلی Google Play ادغام می‌شود تا AAB‌هایی را که آپلود می‌کنید پردازش کند و APK‌هایی را که برای پیکربندی‌های دستگاه آزمایش‌کنندگان شما بهینه‌سازی شده‌اند ارائه می‌دهد. توزیع AAB به شما امکان می دهد کارهای زیر را انجام دهید:

  • فایل‌های APK بهینه‌سازی شده (که توسط Google Play ارائه می‌شود) را اجرا کنید که برای دستگاه‌های آزمایش‌کنندگان شما بهینه‌سازی شده‌اند.

  • مشکلات مربوط به دستگاه را کشف و اشکال زدایی کنید.

  • ویژگی‌های بسته نرم‌افزار مانند Play Feature Delivery و Play Asset Delivery را آزمایش کنید.

  • حجم دانلودها را برای آزمایش کنندگان خود کاهش دهید.

مجوزهای مورد نیاز

برای آپلود AABها در App Distribution ، باید برنامه Firebase خود را به یک برنامه در Google Play پیوند دهید . برای انجام این اقدامات باید سطح دسترسی لازم را داشته باشید.

اگر دسترسی Firebase لازم را ندارید، می‌توانید از مالک پروژه Firebase بخواهید که از طریق تنظیمات IAM کنسول Firebase نقش قابل اجرا را به شما اختصاص دهد. اگر در مورد دسترسی به پروژه Firebase خود، از جمله پیدا کردن یا اختصاص مالک، سؤالی دارید ، سؤالات متداول "مجوزها و دسترسی به پروژه های Firebase" را مرور کنید.

جدول زیر برای پیوند یک برنامه Firebase به یک برنامه در Google Play و همچنین آپلود AAB ها کاربرد دارد.

اکشن در کنسول Firebase مجوز IAM مورد نیاز است نقش(های) IAM که به طور پیش فرض شامل مجوزهای مورد نیاز است نقش(های) مورد نیاز اضافی
یک برنامه Firebase را به یک برنامه در Google Play پیوند دهید firebase.playLinks.update یکی از نقش های زیر: دسترسی به حساب توسعه دهنده Google Play به عنوان Admin
AAB ها را در App Distribution آپلود کنید firebaseappdistro.releases.update یکی از نقش های زیر: ––

قبل از شروع

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

    اگر از محصولات Firebase دیگری استفاده نمی کنید، فقط باید یک پروژه ایجاد کنید و برنامه خود را ثبت کنید. اگر تصمیم به استفاده از محصولات اضافی دارید، مطمئن شوید که تمام مراحل افزودن Firebase به پروژه Android خود را کامل کرده اید.

  2. برای ایجاد پیوند Firebase به Google Play و آپلود AAB، مطمئن شوید که برنامه شما شرایط زیر را دارد:

    • برنامه در Google Play و برنامه Firebase Android هر دو با استفاده از یک نام بسته ثبت شده اند.

    • برنامه در Google Play در داشبورد برنامه راه‌اندازی می‌شود و در یکی از مسیرهای Google Play (تست داخلی، آزمایش بسته، آزمایش باز یا تولید) توزیع می‌شود.

    • بررسی اپلیکیشن در گوگل پلی کامل شد و اپلیکیشن منتشر شد. اگر ستون وضعیت برنامه یکی از وضعیت‌های زیر را نمایش دهد، برنامه شما منتشر می‌شود: آزمایش داخلی (نه آزمایش داخلی پیش‌نویس)، آزمایش بسته، آزمایش باز یا تولید.

  3. برنامه Firebase Android خود را به حساب توسعه دهنده Google Play خود پیوند دهید:

    1. در کنسول Firebase ، به قسمت خود بروید تنظیمات پروژه ، سپس برگه Integrations را انتخاب کنید.

    2. در کارت Google Play ، روی پیوند کلیک کنید.
      اگر قبلاً پیوندهایی به Google Play دارید، به جای آن روی Manage کلیک کنید.

    3. دستورالعمل‌های روی صفحه را دنبال کنید تا ادغام App Distribution را فعال کنید و برنامه‌های Firebase Android را انتخاب کنید تا به Google Play پیوند داده شوند.

    درباره پیوند دادن به Google Play بیشتر بیاموزید.

مرحله 1. پروژه اندروید خود را راه اندازی کنید

  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
    }
    
  2. در فایل 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'
    }
    
  3. اگر پشت پراکسی یا فایروال شرکتی هستید، ویژگی سیستم جاوا زیر را اضافه کنید که به App Distribution امکان می‌دهد توزیع‌های شما را در Firebase آپلود کند:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

مرحله 2. با Firebase احراز هویت

قبل از اینکه بتوانید از پلاگین Gradle استفاده کنید، ابتدا باید با پروژه Firebase خود به یکی از روش های زیر احراز هویت کنید. به‌طور پیش‌فرض، اگر از روش احراز هویت دیگری استفاده نشود، پلاگین Gradle به دنبال اعتبار از Firebase CLI می‌گردد.

مرحله 3. ویژگی های توزیع خود را پیکربندی کنید

در فایل Gradle ماژول (سطح برنامه) خود (معمولا <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradleApp Distribution با افزودن حداقل پیکربندی کنید. یک بخش firebaseAppDistribution .

به عنوان مثال، برای توزیع release بین آزمایش‌کنندگان، دستورالعمل‌های زیر را دنبال کنید:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

می توانید App Distribution برای انواع ساخت و طعم محصول پیکربندی کنید.

به‌عنوان مثال، برای توزیع debug و release بیلدها در طعم‌های «دمو» و «کامل»، این دستورالعمل‌ها را دنبال کنید:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("debug") {...}
      getByName("release") {...}
  }

  flavorDimensions += "version"
  productFlavors {
      create("demo") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for demo version"
              testers = "demo@testers.com"
          }
      }
      create("full") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for full version"
              testers = "full@testers.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      debug {...}
      release {...}
  }

  flavorDimensions "version"
  productFlavors {
      demo {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for demo version"
              testers="demo@testers.com"
          }
      }
      full {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for full version"
              testers="full@testers.com"
          }
      }
  }

  // ...
}

برای پیکربندی توزیع از پارامترهای زیر استفاده کنید:

پارامترهای ساخت App Distribution
appId

شناسه برنامه Firebase برنامه شما. فقط در صورتی که افزونه Google Services Gradle را نصب نکرده باشید، الزامی است. می‌توانید شناسه برنامه را در فایل google-services.json یا کنسول Firebase در صفحه تنظیمات عمومی پیدا کنید. مقدار موجود در فایل build.gradle شما مقدار خروجی از افزونه google-services را لغو می کند.

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

مسیر فایل JSON کلید خصوصی حساب سرویس شما. فقط در صورت استفاده از احراز هویت حساب سرویس مورد نیاز است.

artifactType

نوع فایل برنامه شما را مشخص می کند. را می توان روی "AAB" یا "APK" تنظیم کرد.

artifactPath

مسیر مطلق به فایل APK یا AAB که می‌خواهید آپلود کنید.

releaseNotes یا releaseNotesFile

یادداشت های انتشار برای این ساخت.

شما می توانید یادداشت های انتشار را مستقیماً یا مسیر یک فایل متنی ساده را مشخص کنید.

testers یا testersFile

آدرس‌های ایمیل آزمایش‌کنندگانی که می‌خواهید ساخت‌ها را در آنها توزیع کنید.

می‌توانید آزمایش‌کننده‌ها را به‌عنوان فهرستی از آدرس‌های ایمیل جدا شده با کاما مشخص کنید:

testers="ali@example.com, bri@example.com, cal@example.com"

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

testersFile="/path/to/testers.txt"
groups یا groupsFile

گروه‌های آزمایش‌کننده‌ای که می‌خواهید ساخت‌ها را در آنها توزیع کنید ( به مدیریت آزمایش‌کنندگان رجوع کنید). گروه ها با استفاده از آن مشخص می شوند نام مستعار گروهی ، که می توانید آن را در تب Testers در کنسول Firebase App Distribution پیدا کنید.

می‌توانید گروه‌ها را به‌عنوان فهرستی از نام‌های مستعار گروهی جدا شده با کاما مشخص کنید:

groups="qa-team, android-testers"

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

groupsFile="/path/to/tester-groups.txt"
testDevices یا testDevicesFile

انواع توزیع زیر بخشی از ویژگی آزمایش کننده خودکار بتا هستند.

دستگاه‌های آزمایشی که می‌خواهید بیلدها را در آنها توزیع کنید (به تست‌های خودکار مراجعه کنید).

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

testDevices="model=shiba,version=34,locale=en,orientation=portrait;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. برنامه خود را بین آزمایش کنندگان توزیع کنید

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

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

    ./gradlew bundleRelease appDistributionUploadRelease
    

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

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

    • برای آپلود بیلد اشکال زدایی در App Distribution :

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
      
    • برای دعوت از آزمایش‌کنندگان دیگر یا حذف آزمایش‌کنندگان موجود از پروژه 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 در کنار آزمایش‌کننده در نسخه‌ای که منتشر می‌شود، اعلان انقضا ظاهر می‌شود. دعوتنامه را می توان با ارسال مجدد آن با استفاده از منوی کشویی در ردیف آزمایشگر تمدید کرد.

مراحل بعدی