يمكنك دمج "App Distribution" في عملية إصدار Android باستخدام App Distribution المكوّن الإضافي لنظام Gradle يتيح لك المكوّن الإضافي تحديد المختبِرين ملاحظات الإصدار في ملف Gradle لتطبيقك، بما يسمح لك بإعداد التوزيعات للتعرّف على أنواع الإصدارات والصيغ المختلفة لتطبيقك
يوضّح هذا الدليل كيفية توزيع حِزم APK على المختبِرين باستخدام ملف App Distribution Gradle الإضافي.
قبل البدء
أضِف Firebase إلى جهاز Android إذا لم يسبق لك إجراء ذلك. مشروعك.
إذا كنت لا تستخدم أي منتجات أخرى من منتجات Firebase، ما عليك سوى إنشاء للمشروع وتسجيل تطبيقك. ومع ذلك، إذا قررت استخدام ميزات منتجاتك في المستقبل، احرص على إكمال جميع الخطوات الواردة في الصفحة المرتبطة أعلاه.
الخطوة 1: إعداد مشروع Android
في ملف 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 }
في ملف 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 = "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. مطلوبة فقط إذا لم يكن لديك
تم تثبيت المكوّن الإضافي لنظام Gradle لخدمات Google. يمكنك العثور على رقم تعريف التطبيق في
ملف 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 wrapper في مشروعك، حيث يكون BUILD-VARIANT هو نوع المنتج ونوع الإصدار الاختياريَين اللذَين أعددتهما في الخطوة السابقة. لمزيد من المعلومات حول نكهات المنتجات، راجع ضبط صيغ الإصدارعلى سبيل المثال، لتوزيع تطبيقك باستخدام صيغة الإصدار
release
، شغِّل الأمر التالي:./gradlew assembleRelease appDistributionUploadRelease
أو إذا سجّلت الدخول باستخدام حسابك على Google ولم تقدِّم بيانات الاعتماد في ملف إنشاء Gradle، أدرِج المتغيّر
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، يمكنك إضافته إلى إصدارات فردية. لن يتمكّن المختبِرون الذين تمت إزالتهم من الوصول إلى الإصدارات في مشروعك، ولكن قد تحتفظ بإمكانية الوصول إلى إصداراتك لفترة من الوقت.
يمكنك أيضًا تحديد المختبِرين باستخدام
--file="/path/to/testers.txt"
بدلاً من--emails
.تقبل مهمتَا
appDistributionAddTesters
وappDistributionRemoveTesters
الوسيطات التالية أيضًا:projectNumber
: رقم مشروع FirebaseserviceCredentialsFile
: المسار إلى ملف بيانات اعتماد خدمة Google وهذه هي الوسيطة نفسها التي يستخدمها إجراء التحميل.
يُخرج المكوّن الإضافي Gradle الروابط التالية بعد تحميل الإصدار. تساعدك هذه الروابط في إدارة الملفات الثنائية والتأكّد من حصول المختبِرين والمطوّرين الآخرين على الإصدار الصحيح:
firebase_console_uri
- رابط إلى وحدة تحكّم Firebase يعرض إصدار واحد. يمكنك مشاركة هذا الرابط مع مطوِّرين آخرين في org.testing_uri
- رابط يؤدي إلى الإصدار في تجربة المختبِر (تطبيق أصلي لنظام التشغيل Android) ويتيح للمختبِرين الاطّلاع على ملاحظات الإصدار وتثبيت التطبيق على أجهزتهم. يحتاج المختبِر إلى إذن بالوصول إلى الإصدار لاستخدام الرابط.binary_download_uri
- رابط موقَّع يتيح تنزيل ملف التطبيق الثنائي (ملف APK أو حزمة AAB) و تثبيته مباشرةً. تنتهي صلاحية الرابط بعد ساعة واحدة.
بعد توزيع الإصدار، يصبح متوفّرًا في لوحة بيانات App Distribution في وحدة تحكّم Firebase لمدة 150 يومًا (خمسة أشهر). عندما تنتهي صلاحية الإصدار بعد 30 يومًا من انتهاء صلاحيته، يظهر إشعار انتهاء الصلاحية في وحدة التحكم وقائمة الإصدارات الخاصة بالمختبِرين على جهاز الاختبار الخاص بهم.
يتلقّى المختبِرون الذين لم تتم دعوتهم لاختبار التطبيق دعوات عبر البريد الإلكتروني لبدء الاختبار، ويتلقّى المختبِرون الحاليون إشعارات عبر البريد الإلكتروني تفيد بأنّ الإصدار الجديد جاهز للاختبار (اطّلِع على دليل إعداد المختبِر للحصول على تعليمات حول كيفية تثبيت الإصدار الاختباري من التطبيق). يمكنك تتبُّع حالة كل مختبِر، سواء قبل الدعوة أو نزَّل التطبيق، في وحدة تحكّم Firebase.
أمام المختبِرين 30 يومًا لقبول دعوة اختبار التطبيق قبل أن تنتهي صلاحيتها. عندما تنتهي صلاحية الدعوة بعد 5 أيام من انتهاء صلاحيتها، يظهر إشعار انتهاء الصلاحية في وحدة تحكُّم Firebase بجانب المختبِر في أحد الإصدارات يمكن تجديد الدعوة من خلال إعادة إرسالها باستخدام القائمة المنسدلة في صف المختبِر.
الخطوات التالية
تنفيذ الملاحظات داخل التطبيق لتسهّل على المختبِرين إرسال ملاحظات حول تطبيقك (بما في ذلك لقطات الشاشة).
تعرَّف على كيفية عرض تنبيهات داخل التطبيق. إلى المختبِرين عند توفُّر إصدارات جديدة من تطبيقك للتثبيت.
انتقِل إلى الدرس التطبيقي حول ترميز حِزم تطبيق Android للتعرّف على كيفية توزيع إصدارات حِزم التطبيقات خطوة بخطوة.
تعرَّف على أفضل الممارسات لتوزيع تطبيقات Android إلى مختبِري ضمان الجودة باستخدام CI/CD.