يمكنك دمج "App Distribution" في عملية تصميم Android باستخدام المكوّن الإضافي App Distribution Gradle. يتيح لك المكوّن الإضافي تحديد المختبِرين و ملاحظات الإصدار في ملف Gradle الخاص بتطبيقك، ما يتيح لك ضبط عمليات التوزيع لأنواع الإصدارات ونُسخ تطبيقك المختلفة.
يوضّح هذا الدليل كيفية توزيع حِزم تطبيقات Android (AAB) على المختبِرين باستخدام المكوّن الإضافي App Distribution Gradle.
يتم دمج App Distribution مع خدمة "مشاركة التطبيقات مع الفريق الداخلي" في Google Play لمعالجة مجموعة حزمات تطبيق Android التي تحمّلها وعرض حِزم APK المحسّنة لإعدادات أجهزة المختبِرين. يتيح لك توزيع AAB إجراء ما يلي:
يمكنك تشغيل حِزم APK محسّنة (معروضة من خلال Google Play) تم تحسينها لتناسب أجهزة المختبِرين.
رصد المشاكل المتعلّقة بالأجهزة وتصحيحها
اختبِر ميزات حِزم التطبيقات، مثل عرض الميزات في Play وعرض المواد في Play.
يُرجى تقليل حجم المحتوى الذي يمكن تنزيله للمختبِرين.
الأذونات المطلوبة
لتحميل حِزم APK القابلة للحمل إلى App Distribution، عليك ربط تطبيقك على 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
|
أحد الأدوار التالية: | –– |
قبل البدء
أضِف Firebase إلى مشروع Android إذا لم يسبق لك إجراء ذلك. في نهاية سير العمل هذا، سيكون لديك تطبيق Android على Firebase في مشروعك على Firebase.
إذا لم تكن تستخدِم أي منتجات أخرى من Firebase، ما عليك سوى إنشاء مشروع وتسجيل تطبيقك. وإذا قرّرت استخدام منتجات إضافية، احرص على إكمال جميع الخطوات الواردة في مقالة إضافة Firebase إلى مشروع Android.
لإنشاء رابط Firebase بمنصّة Google Play وتحميل حِزم APK القابلة للحمل، تأكّد من أنّ تطبيقك يستوفي المتطلبات التالية:
تم تسجيل التطبيق على Google Play وتطبيق Firebase لنظام التشغيل Android باستخدام اسم الحزمة نفسه.
تم إعداد التطبيق في لوحة بيانات التطبيق على Google Play وتوزيعه على أحد مسارات الإصدار على Google Play (الاختبار الداخلي أو الاختبار المغلق أو الاختبار المفتوح أو الإصدار العلني).
اكتملت مراجعة التطبيق في Google Play وتم نشره. يتم نشر تطبيقك إذا كان عمود حالة التطبيق يعرض إحدى الحالات التالية: اختبار داخلي (وليس اختبارًا داخليًا لمسوّدة) أو اختبار مغلق أو اختبار مفتوح أو إصدار.
ربط تطبيق Android على Firebase بحساب المطوِّر الخاص بك على Google Play:
في وحدة تحكّم Firebase، انتقِل إلى
، ثم اختَر علامة التبويب عمليات الدمج. إعدادات المشروع في بطاقة Google Play، انقر على ربط.
إذا كانت لديك روابط تؤدي إلى Google Play، انقر على إدارة بدلاً من ذلك.اتّبِع التعليمات الظاهرة على الشاشة لتفعيل App Distribution عملية الدمج واختيار تطبيقات Android على Firebase المطلوب ربطها بحسابك على Google Play.
مزيد من المعلومات عن الربط بخدمة Google Play
الخطوة 1: إعداد مشروع Android
في ملف Gradle على مستوى الجذر (على مستوى المشروع) (
<project>/build.gradle.kts
أو<project>/build.gradle
)، أضِف مكوّن Gradle الإضافي App Distribution كتبعية: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' }
إذا كنت تستخدم خادمًا وكيلاً أو جدار حماية تابعَين لمؤسسة، أضِف سمة نظام 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
)، اضبط App 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 مثبّتًا. يمكنك العثور على معرّف التطبيق فيملف 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
|
تُطبع تسلسل استدعاء الدوال البرمجية لأخطاء المستخدم. ويُعدّ هذا الإجراء مفيدًا عند تصحيح الأخطاء. |
الخطوة 4. توزيع تطبيقك على المختبِرين
أخيرًا، من أجل تجميع تطبيقك التجريبي ودعوة المختبِرين، أنشِئ الهدفَين
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
يمكنك أيضًا إلغاء القيم المحدّدة في ملف
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 يعرض إصدارًا واحدًا. يمكنك مشاركة هذا الرابط مع مطوّرين آخرين في مؤسستك.testing_uri
- رابط يؤدي إلى الإصدار في تجربة المختبِر (تطبيق أصلي لنظام التشغيل Android) يتيح للمختبِرين الاطّلاع على ملاحظات الإصدار وتثبيت التطبيق على أجهزتهم. يحتاج المختبِر إلى إذن بالوصول إلى الإصدار لاستخدام الرابط.binary_download_uri
- رابط موقَّع يتيح تنزيل ملف التطبيق الثنائي (ملف APK أو حزمة AAB) و تثبيته مباشرةً. تنتهي صلاحية الرابط بعد ساعة واحدة.
بعد توزيع الإصدار، سيصبح متوفّرًا في لوحة بيانات "App Distribution" ضمن وحدة تحكُّم Firebase لمدة 150 يومًا (خمسة أشهر). عندما تنتهي صلاحية الإصدار بعد 30 يومًا من انتهاء صلاحيته، يظهر إشعار انتهاء الصلاحية في كل من وحدة التحكّم وقائمة الإصدارات الخاصة بالمختبِرين على جهاز الاختبار.
يتلقّى المختبِرون الذين لم تتم دعوتهم لاختبار التطبيق دعوات عبر البريد الإلكتروني لبدء الاختبار، ويتلقّى المختبِرون الحاليون إشعارات عبر البريد الإلكتروني تفيد بأنّ الإصدار الجديد جاهز للاختبار (اطّلِع على دليل إعداد المختبِر للحصول على تعليمات حول كيفية تثبيت الإصدار الاختباري من التطبيق). يمكنك تتبُّع حالة كل مختبِر، سواء قبل الدعوة أو نزَّل التطبيق، في وحدة تحكّم Firebase.
أمام المختبِرين 30 يومًا لقبول دعوة اختبار التطبيق قبل أن تنتهي صلاحيتها. عندما تبقى 5 أيام على انتهاء صلاحية الدعوة، يظهر إشعار بانتهاء الصلاحية في وحدة تحكّم Firebase بجانب المختبِر في الإصدار. يمكن تجديد الدعوة من خلال إعادة إرسالها باستخدام القائمة المنسدلة في صف المختبِر.
الخطوات التالية
يمكنك توفير ميزة ملاحظات داخل التطبيق لتسهيل إرسال الملاحظات حول تطبيقك من قِبل المختبِرين (بما في ذلك لقطات الشاشة).
تعرَّف على كيفية عرض تنبيهات داخل التطبيق للمختبِرين عندما تتوفّر إصدارات جديدة من تطبيقك لتثبيتها.
انتقِل إلى الدرس التطبيقي حول ترميز حِزم تطبيق Android للتعرّف على كيفية توزيع إصدارات حِزم التطبيقات خطوة بخطوة.
تعرَّف على أفضل الممارسات لتوزيع تطبيقات Android على مختبِري ضمان الجودة باستخدام ميزة "التكامل والنشر".