يمكنك دمج توزيع التطبيقات في عملية إنشاء نظام Android الخاص بك باستخدام البرنامج الإضافي لتوزيع التطبيقات Gradle. يتيح لك المكون الإضافي تحديد المختبرين وملاحظات الإصدار في ملف Gradle الخاص بتطبيقك ، مما يتيح لك تكوين توزيعات لأنواع إنشاء ومتغيرات مختلفة لتطبيقك.
يصف هذا الدليل كيفية توزيع حزم تطبيقات Android (AABs) على المختبرين باستخدام المكون الإضافي لـ App Distribution Gradle.
يتكامل توزيع التطبيقات مع خدمة مشاركة التطبيقات الداخلية في Google Play لمعالجة AABs التي تقوم بتحميلها وتقديم ملفات APK المحسّنة لتكوينات جهاز المختبرين. يتيح لك توزيع AABs القيام بما يلي:
قم بتشغيل ملفات APK المحسنة (التي يقدمها Google Play) والتي تم تحسينها لأجهزة المختبرين.
كشف المشاكل الخاصة بالجهاز وتصحيحها.
اختبار ميزات حزمة التطبيقات مثل Play Feature Delivery و Play Asset Delivery .
تقليل حجم التنزيلات للمختبرين.
الأذونات المطلوبة
لتحميل AABs إلى App Distribution ، يجب عليك ربط تطبيق Firebase بتطبيق في Google Play . يجب أن يكون لديك مستوى الوصول المطلوب لتنفيذ هذه الإجراءات.
إذا لم يكن لديك حق الوصول الضروري إلى Firebase ، يمكنك أن تطلب من مالك مشروع Firebase أن يعين لك الدور المناسب عبر إعدادات IAM لوحدة التحكم في Firebase . إذا كانت لديك أسئلة حول الوصول إلى مشروع Firebase ، بما في ذلك العثور على مالك أو تعيينه ، فراجع الأسئلة الشائعة حول "الأذونات والوصول إلى مشاريع Firebase" .
ينطبق الجدول التالي على ربط تطبيق Firebase بتطبيق في Google Play ، بالإضافة إلى تحميل AABs.
إجراء في وحدة تحكم Firebase | مطلوب إذن IAM | دور (أدوار) IAM التي تتضمن الأذونات المطلوبة بشكل افتراضي | الدور (الأدوار) الإضافية المطلوبة |
---|---|---|---|
اربط تطبيق Firebase بتطبيق في Google Play | firebase.playLinks.update | أحد الأدوار التالية: | الوصول إلى حساب مطور Google Play كمسؤول |
تحميل AABs إلى توزيع التطبيق | firebaseappdistro.releases.update | أحد الأدوار التالية: | - – |
قبل ان تبدأ
أضف Firebase إلى مشروع Android ، إذا لم تكن قد قمت بذلك بالفعل. في نهاية سير العمل هذا ، سيكون لديك تطبيق Firebase Android في مشروع Firebase.
إذا كنت لا تستخدم أي منتجات Firebase أخرى ، فأنت تحتاج فقط إلى إنشاء مشروع وتسجيل تطبيقك. إذا قررت استخدام منتجات إضافية ، فتأكد من إكمال جميع الخطوات في إضافة Firebase إلى مشروع Android الخاص بك .
لإنشاء رابط Firebase إلى Google Play وتحميل AABs ، تأكد من أن تطبيقك يلبي المتطلبات التالية:
تم تسجيل التطبيق في Google Play وتطبيق Firebase Android باستخدام نفس اسم الحزمة.
يتم إعداد التطبيق في Google Play على لوحة معلومات التطبيق ويتم توزيعه على أحد مسارات Google Play (الاختبار الداخلي أو الاختبار المغلق أو الاختبار المفتوح أو الإنتاج).
اكتملت مراجعة التطبيق في Google Play وتم نشر التطبيق. يتم نشر تطبيقك إذا كان عمود حالة التطبيق يعرض إحدى الحالات التالية: الاختبار الداخلي (ليس مسودة اختبار داخلي) أو اختبار مغلق أو اختبار مفتوح أو إنتاج.
اربط تطبيق Firebase Android بحساب مطوّر برامج Google Play:
في وحدة تحكم Firebase ، انتقل إلى
Project settings ، ثم حدد علامة التبويب Integrations .في بطاقة Google Play ، انقر فوق ارتباط .
إذا كان لديك بالفعل روابط إلى Google Play ، فانقر فوق إدارة بدلاً من ذلك.اتبع التعليمات التي تظهر على الشاشة لتمكين تكامل توزيع التطبيقات وحدد تطبيقات Firebase Android لربطها بـ Google Play.
تعرف على المزيد حول الارتباط بـ Google Play .
الخطوة 1. قم بإعداد مشروع Android الخاص بك
في ملف Gradle على مستوى الجذر (على مستوى المشروع) (
<project>/build.gradle.kts
أو<project>/build.gradle
) ، أضف إضافة App Distribution Gradle كعنصر تبعية:Kotlin
plugins { // ... id("com.android.application") version "7.2.0" apply false // Make sure that you have the Google services Gradle plugin dependency id("com.google.gms.google-services") version "4.3.15" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "4.0.0" apply false }
Groovy
plugins { // ... id 'com.android.application' version '7.2.0' apply false // Make sure that you have the Google services Gradle plugin dependency id 'com.google.gms.google-services' version '4.3.15' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '4.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' }
إذا كنت تعمل خلف جدار حماية أو وكيل شركة ، فأضف خاصية نظام Java التالية التي تمكّن توزيع التطبيقات من تحميل توزيعاتك إلى 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
للإشارة إلى ملف مفتاح حساب الخدمة. قد تفضل هذه الطريقة إذا كان لديك بالفعل بيانات اعتماد التطبيق الافتراضية (ADC) التي تم تكوينها لخدمة Google أخرى (مثل Google Cloud).
للمصادقة باستخدام بيانات اعتماد حساب الخدمة:
- في Google Cloud Console ، حدد مشروعك وأنشئ حساب خدمة جديدًا.
- أضف دور مسؤول توزيع تطبيقات Firebase .
- قم بإنشاء مفتاح json خاص وانقل المفتاح إلى موقع يمكن الوصول إليه من بيئة الإنشاء الخاصة بك. تأكد من الاحتفاظ بهذا الملف في مكان آمن ، لأنه يمنح وصول المسؤول إلى توزيع التطبيقات في مشروع 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
) ، قم بتهيئة توزيع التطبيق عن طريق إضافة ما لا يقل عن قسم واحد 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 لتطبيقك. مطلوب فقط إذا لم يكن لديك المكون الإضافي 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" |
stacktrace | يطبع تتبع المكدس لاستثناءات المستخدم. هذا مفيد عند تصحيح الأخطاء. |
الخطوة 4. وزع تطبيقك على المختبرين
أخيرًا ، لحزم تطبيق الاختبار الخاص بك ودعوة المختبرين ، قم ببناء الأهداف
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
يمكنك أيضًا تجاوز القيم المحددة في ملف
build.gradle
الخاص بك عن طريق تمرير وسيطات سطر الأوامر في شكل--<property-name>=<property-value>
. على سبيل المثال:لتحميل إصدار تصحيح إلى توزيع التطبيقات:
./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). تنتهي صلاحية الرابط بعد ساعة واحدة.
بمجرد توزيع التصميم الخاص بك ، يصبح متاحًا في لوحة معلومات توزيع التطبيقات لوحدة تحكم Firebase لمدة 150 يومًا (خمسة أشهر). عند مرور 30 يومًا على انتهاء صلاحية الإصدار ، يظهر إشعار انتهاء الصلاحية في كل من وحدة التحكم وقائمة البنيات الخاصة بالمختبرين على جهاز الاختبار الخاص بهم.
يتلقى المختبِرون الذين لم تتم دعوتهم لاختبار التطبيق دعوات بالبريد الإلكتروني للبدء ، ويتلقى المختبِرون الحاليون إشعارات بالبريد الإلكتروني تفيد بأن البناء الجديد جاهز للاختبار (اقرأ دليل إعداد المُختبِر للحصول على إرشادات حول كيفية تثبيت التطبيق التجريبي). يمكنك مراقبة حالة كل مُختبِر - ما إذا كان قد قبل الدعوة وما إذا كان قد قام بتنزيل التطبيق - في وحدة تحكم Firebase.
لدى المختبرين 30 يومًا لقبول دعوة لاختبار التطبيق قبل انتهاء صلاحيته. عندما تكون الدعوة بعد 5 أيام من انتهاء صلاحيتها ، يظهر إشعار انتهاء الصلاحية في وحدة تحكم Firebase بجوار المُختبِر في الإصدار. يمكن تجديد الدعوة عن طريق إعادة إرسالها باستخدام القائمة المنسدلة في صف المختبر.
الخطوات التالية
نفِّذ التعليقات داخل التطبيق ليسهل على المختبرين إرسال تعليقات حول تطبيقك (بما في ذلك لقطات الشاشة).
تعرف على كيفية عرض التنبيهات داخل التطبيق للمختبرين عند توفر إصدارات جديدة من تطبيقك للتثبيت.
تفضل بزيارة مختبر رموز حزمة تطبيقات Android للتعرف على كيفية توزيع إصدارات حزم التطبيقات خطوة بخطوة.
تعرف على أفضل الممارسات لتوزيع تطبيقات Android على مختبري ضمان الجودة باستخدام CI / CD .