توزيع تطبيقات Android على المختبِرين باستخدام Gradle

يمكنك دمج App Distribution في عملية إصدار Android باستخدام المكوّن الإضافي لنظام Gradle لتوزيع التطبيقات. يتيح لك المكوّن الإضافي تحديد المختبِرين ملاحظات الإصدار في ملف Gradle لتطبيقك، بما يسمح لك بإعداد التوزيعات للتعرّف على أنواع الإصدارات والصيغ المختلفة لتطبيقك

يوضِّح هذا الدليل كيفية توزيع مجموعات حزمات تطبيق Android (AAB) على المختبِرين. باستخدام المكوّن الإضافي لنظام Gradle لتوزيع التطبيقات.

تتكامل ميزة "توزيع التطبيقات" مع خدمة مشاركة التطبيقات الداخلية من Google Play لتنفيذ ما يلي: معالجة ملفات AAB التي تحمِّلها وعرض حِزم APK المحسَّنة للمختبِرين إعدادات الأجهزة. يتيح لك توزيع AAB إجراء ما يلي:

  • يمكنك تشغيل حِزم APK محسّنة (معروضة من خلال Google Play) تم تحسينها لتناسب احتياجاتك. للمختبِرين الأجهزة.

  • كشف المشاكل الخاصة بالجهاز وتصحيح الأخطاء فيها

  • اختبار ميزات حِزم التطبيقات مثل عرض الميزات في Play وعرض المواد في Play

  • يُرجى تقليل حجم المحتوى الذي يتم تنزيله للمختبِرين.

الأذونات المطلوبة

لتحميل ملفات AAB إلى ميزة "توزيع التطبيقات"، عليك ربط تطبيقك على Firebase بأحد التطبيقات. في Google Play يجب أن يكون لديك مستوى الوصول المطلوب لتنفيذ هذه الإجراءات.

إذا لم يكن لديك إذن الوصول اللازم إلى Firebase، يمكنك طلب مشروع في Firebase. أن يتولى المالك تعيين الدور المناسب لك من خلال إعدادات إدارة الهوية وإمكانية الوصول في وحدة تحكُّم Firebase إذا كانت لديك أسئلة بشأن الوصول إلى مشروع Firebase، بما في ذلك: العثور على مالك أو تعيينه، ومراجعة "الأذونات وإمكانية الوصول إلى مشاريع Firebase" الأسئلة الشائعة:

ينطبق الجدول التالي على ربط تطبيق Firebase بتطبيق في Google Play، فضلاً عن تحميل ملفات AAB.

الإجراء في وحدة تحكُّم Firebase الإذن المطلوب لإدارة الهوية وإمكانية الوصول أدوار "إدارة الهوية وإمكانية الوصول" التي تتضمّن الأذونات المطلوبة من قِبل تلقائي الأدوار الإضافية المطلوبة
ربط تطبيق على Firebase بتطبيق في Google Play firebase.playLinks.update أحد الأدوار التالية: الوصول إلى حساب مطوِّر على Google Play باستخدام المشرف
تحميل ملفات 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 (الاختبار الداخلي، الاختبار المغلق أو الاختبار المفتوح أو الإنتاج).

    • اكتملت مراجعة التطبيق في Google Play وتم نشره. يتم نشر تطبيقك إذا كان عمود حالة التطبيق يعرض أحد الحالات التالية: اختبار داخلي (وليس اختبارًا داخليًا في وضع المسودة) الاختبار المغلق أو الاختبار المفتوح أو الإنتاج

  3. اربط تطبيق Android على Firebase بحساب المطوِّر على Google Play:

    1. في "وحدة تحكُّم Firebase"، انتقِل إلى إعدادات المشروع، ثم اختَر علامة التبويب عمليات الدمج.

    2. في بطاقة Google Play، انقر على ربط.
      إذا كان لديك روابط تؤدي إلى Google Play، انقر على إدارة. بدلاً من ذلك.

    3. اتّبِع التعليمات الظاهرة على الشاشة لتفعيل ميزة "توزيع التطبيقات" التكامل واختيار تطبيقات Firebase Android المطلوب ربطها بـ Google اللعب.

    مزيد من المعلومات حول ربط الحساب بمتجر Google Play.

الخطوة 1: إعداد مشروع Android

  1. في ملف Gradle على مستوى الجذر (على مستوى المشروع) (<project>/build.gradle.kts أو <project>/build.gradle)، أضِف السمة المكوّن الإضافي لنظام 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)، أضف المكون الإضافي لنظام 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. إذا كان لديك خادم وكيل لشركة أو جدار حماية، أضف ما يلي: موقع نظام Java التي تمكّن ميزة App Distribution من تحميل توزيعاتك إلى Firebase:

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

الخطوة 2: المصادقة باستخدام Firebase

قبل أن تتمكن من استخدام مكون Gradle الإضافي، يجب عليك أولاً المصادقة مع مشروع Firebase بإحدى الطرق التالية. بشكلٍ تلقائي، المكوّن الإضافي Gradle تبحث عن بيانات الاعتماد من واجهة سطر الأوامر في Firebase في حال عدم الحاجة إلى مصادقة أخرى طريقة المشروع الشائعة.

الخطوة 3: ضبط خصائص التوزيع

في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle)، اضبط "توزيع التطبيقات" من خلال الإضافة إلى قسم 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"
          }
      }
  }

  // ...
}

يمكنك ضبط إعدادات ميزة "توزيع التطبيقات" في إنشاء أنواع ونكهات المنتجات.

على سبيل المثال، لتوزيع إصدارات 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"
          }
      }
  }

  // ...
}

استخدِم المَعلمات التالية لضبط التوزيع:

معلمات إصدار توزيع التطبيقات
appId

رقم تعريف تطبيقك في Firebase. مطلوبة فقط إذا لم يكن لديك تم تثبيت المكوّن الإضافي لنظام Gradle لخدمات Google. يمكنك العثور على رقم تعريف التطبيق في ملف 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

مجموعات المختبِرين التي تريد توزيع الإصدارات عليها (يُرجى الاطّلاع على إدارة المختبِرين). يتم تحديد المجموعات باستخدام الأسماء المستعارة للمجموعات، والتي يمكنك يمكنك العثور عليه في علامة التبويب المختبِرون في Firebase وحدة تحكم توزيع التطبيقات.

يمكنك تحديد المجموعات كقائمة مفصولة بفواصل من المجموعات. الأسماء المستعارة:

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

طباعة جدول تسلسل استدعاء الدوال البرمجية لاستثناءات المستخدم. يكون هذا مفيدًا عندما مشكلات تصحيح الأخطاء.

الخطوة 4. توزيع تطبيقك على المختبِرين

  1. أخيرًا، من أجل إعداد حزمة للتطبيق التجريبي ودعوة المختبِرين، أنشِئ الأهداف BUILD-VARIANT و appDistributionUploadBUILD-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. يمكنك أيضًا إلغاء القيم المحدّدة في ملف build.gradle من خلال تمرير. وسيطات سطر الأوامر في شكل --<property-name>=<property-value> على سبيل المثال:

    • لتحميل إصدار تصحيح الأخطاء إلى 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 يعرض إصدار واحد. يمكنك مشاركة هذا الرابط مع مطوِّرين آخرين في org.
  • testing_uri - رابط للإصدار في تجربة المختبِر (تطبيق Android الأصلي) الذي يتيح للمختبِرين عرض الإصدار الملاحظات وتثبيت التطبيق على أجهزتهم. يحتاج المختبِر إلى الوصول إلى الإصدار من أجل استخدام الرابط.
  • binary_download_uri - رابط موقَّع يتم تنزيله مباشرةً تثبّت البرنامج الثنائي للتطبيق (ملف APK أو AAB). تنتهي صلاحية الرابط بعد ساعة.

بعد توزيع الإصدار، سيصبح متوفّرًا في لوحة بيانات "توزيع التطبيقات" ضمن وحدة تحكُّم Firebase لمدة 150 يومًا (خمسة أشهر). عندما تنتهي صلاحية الإصدار بعد 30 يومًا من انتهاء صلاحيته، يظهر إشعار انتهاء الصلاحية في وحدة التحكم وقائمة الإصدارات الخاصة بالمختبِرين على جهاز الاختبار الخاص بهم.

يتلقّى المختبِرون الذين لم تتم دعوتهم لاختبار التطبيق دعوات بالبريد الإلكتروني إلى وسيتلقّى المختبِرون الحاليون إشعارات عبر البريد الإلكتروني تفيد بأنّ إصدارًا جديدًا على استعداد للاختبار (يُرجى قراءة دليل إعداد المختبِر للحصول على تعليمات حول طريقة تثبيت الاختبار التطبيق). يمكنك مراقبة حالة كل مختبِر، وما إذا كان قد قبل دعوة ومعرفة ما إذا كانوا قد نزّلوا التطبيق في وحدة تحكُّم Firebase أم لا.

ويكون لدى المختبِرين 30 يومًا لقبول الدعوة لاختبار التطبيق قبل انتهاء صلاحيته. عندما تنتهي صلاحية الدعوة بعد 5 أيام من انتهاء صلاحيتها، يظهر إشعار انتهاء الصلاحية في وحدة تحكُّم Firebase بجانب المختبِر في أحد الإصدارات. يمكن أن تكون الدعوة تجديده من خلال إعادة إرساله باستخدام القائمة المنسدلة في صف المختبر.

الخطوات التالية