Firebase App Distribution هو خدمة من Google لتوزيع الإصدارات الأولية للتطبيقات المحمولة بين المختبرين والفرق الداخلية دون الحاجة إلى نشرها في متاجر التطبيقات. يوفر App Distribution واجهة موحدة لتحميل ملفات APK و IPA، وإدارة مجموعات المختبرين، وجمع الملاحظات. وفقًا لـ Firebase Documentation, 2026، يقوم الخدمة بإخطار المختبرين تلقائيًا بالإصدارات الجديدة عبر البريد الإلكتروني وإشعارات الدفع، ويسمح تكامل Fastlane بنشر الإصدارات مباشرة من خط أنابيب CI/CD دون إجراءات يدوية. يدعم App Distribution كلاً من Android (AAB/APK) و iOS (IPA)، بما في ذلك التوزيع ad-hoc والمؤسسي.
النقاط الرئيسية
Firebase App Distribution هو خدمة من Google لتوزيع الإصدارات ما قبل النهائية للتطبيقات المحمولة بين المختبرين والأطراف المعنية. على عكس النشر في متاجر التطبيقات، يسمح App Distribution بتوصيل الإصدارات إلى المشاركين المختارين فورًا، دون عملية مراجعة طويلة. الخدمة مدمجة مع Firebase Crashlytics، مما يتيح للمطورين تلقي تقارير الأعطال مباشرة من المختبرين وإصلاح المشكلات قبل الإصدار العام.
تتضمن عملية توزيع الإصدارات التجريبية التقليدية إرسال ملفات APK/IPA يدويًا عبر البريد الإلكتروني، أو تحميلها إلى خدمات مشاركة ملفات تابعة لجهات خارجية، أو إعداد خادم خاص. Firebase App Distribution يحل هذه المشكلات: مستودع موحد للإصدارات على Google Cloud، وإخطارات تلقائية للمختبرين، وإدارة مركزية للوصول، وملاحظات مدمجة عبر Firebase Crashlytics. الخدمة لا غنى عنها للفرق التي تمارس CI/CD والإصدارات المنتظمة: الإصدار الجديد متاح للمختبرين في غضون دقيقة بعد التحميل.
يدعم App Distribution جميع صيغ الإصدارات القياسية للمنصات المحمولة. لـ Android — APK و Android App Bundle (AAB) مع إنشاء APK تلقائيًا من AAB أثناء التثبيت. لـ iOS — ملفات IPA للتوزيع ad-hoc والتطوير والمؤسسي. كل إصدار مصحوب بملاحظات الإصدار ورقم الإصدار ورمز الإصدار للتتبع. الحد الأقصى لحجم الملف الذي يمكن تحميله هو 500 ميغابايت، ومدة تخزين الإصدارات 150 يومًا.
يتم تحميل الإصدارات إلى Firebase App Distribution عبر Firebase Console، أو CLI (firebase appdistribution:distribute)، أو الأدوات الآلية مثل Fastlane و Gradle. عند التحميل، يتم تحديد إصدار الإصدار وملاحظات الإصدار وقائمة المختبرين أو المجموعات التي يجب أن تتلقى إخطارًا. يقوم Firebase تلقائيًا بتعيين معرف فريد للإصدار ويجعله متاحًا للتثبيت عبر رابط.
توفر Firebase Console واجهة ويب لتحميل الإصدارات وإدارة الإصدارات. تعرض وحدة التحكم سجل جميع الإصدارات التي تم تحميلها مع التاريخ والإصدار والحالة وعدد مرات التثبيت. يمكن للمطور تعطيل إصدار معين إذا تم العثور على خطأ خطير — سيؤدي ذلك إلى منع تثبيت هذا الإصدار لجميع المختبرين. تعرض وحدة التحكم أيضًا رسمًا بيانيًا لعمليات التثبيت حسب اليوم، مما يساعد في تتبع نشاط الاختبار.
يسمح Firebase CLI بتحميل الإصدارات بأمر واحد، مما يسهل التكامل مع خطوط أنابيب CI/CD. يقبل أمر distribute مسار الملف ورمز وصول المشروع وقائمة مجموعات المختبرين وملاحظات الإصدار الاختيارية. يستخدم المصادقة حساب خدمة Firebase مع دور مسؤول Firebase App Distribution. يدعم CLI كلاً من إصدارات Android و iOS، مع الكشف التلقائي عن المنصة من خلال امتداد الملف.
# تحميل إصدار عبر Firebase CLI
firebase appdistribution:distribute \
app-release.apk \
--app 1:123456789:android:abc123def456 \
--groups "qa-team,product-owners" \
--release-notes "تم إصلاح خطأ التفويض" \
--token "FIREBASE_TOKEN"
يوفر Firebase App Distribution نظامًا مرنًا لإدارة المختبرين: يمكن إضافة المشاركين عبر البريد الإلكتروني، وإنشاء مجموعات حسب الأدوار أو المشاريع، وتعيين إصدارات مختلفة لمجموعات مختلفة. عند إضافة مختبر جديد، يرسل النظام له بريدًا إلكترونيًا للدعوة مع تعليمات تثبيت التطبيق. يتلقى المختبرون إخطارات تلقائية حول كل إصدار جديد يتم تعيينه لمجموعتهم.
تتيح المجموعات تنظيم المختبرين وظيفيًا. أمثلة على المجموعات: فريق ضمان الجودة (وصول كامل لجميع الإصدارات)، مالكو المنتجات (وصول للإصدارات المستقرة)، مختبرين خارجيين (وصول محدود للمختبرين التجريبيين الخارجيين). يمكن للمختبر الواحد الانتماء إلى عدة مجموعات. عند تحميل إصدار، يختار المطور المجموعات المستهدفة — يتلقى الإخطارات فقط أعضاء المجموعات المحددة، مما يلغي الضوضاء المعلوماتية.
لإضافة المختبرين برمجيًا، يتم استخدام Firebase App Distribution API. تسمح API بإنشاء مختبرين، وإضافتهم إلى مجموعات، وحذفهم عند الضرورة. هذا مفيد للتكامل مع أنظمة إدارة الاختبار الداخلية ومتتبعات الأخطاء. عند إضافة مختبر عبر API، يتلقى أيضًا بريدًا إلكترونيًا للدعوة مع رابط لتثبيت التطبيق الأول.
const admin = require("firebase-admin")
const serviceAccount = require("./serviceAccountKey.json")
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })
async function addTestersToGroup(email, groupAlias) {
try {
await admin.appDistribution().addTesters(email, [groupAlias])
console.log("تمت إضافة المختبر إلى المجموعة")
} catch (error) {
console.error("خطأ:", error)
}
}
addTestersToGroup("tester@example.com", "qa-team")
يدعم توزيع إصدارات Android عبر Firebase App Distribution صيغتين: APK و Android App Bundle (AAB). عند تحميل AAB، يقوم Firebase تلقائيًا بإنشاء APK متوافق مع جهاز المختبر باستخدام Google Play App Signing. يقوم المختبرون بتثبيت التطبيق عبر رابط مباشر — لا يحتاجون إلى الوصول إلى Google Play Console، ولا يلزم إضافتهم كمختبرين في Play Console. هذا يبسط بشكل كبير عملية الاختبار التجريبي لنظام Android.
للتثبيت عبر App Distribution، يجب على المختبرين تمكين التثبيت من مصادر غير معروفة على أجهزتهم. يقوم Firebase تلقائيًا بإنشاء رابط يؤدي إلى صفحة ويب تحتوي على زر تثبيت APK. لتنسيق AAB، يجب أن يدعم الجهاز Play Core Library وأن يكون Google Play Store مثبتًا. يوصي Firebase باستخدام AAB للإصدارات النهائية و APK للتكرارات السريعة.
يسمح إضافة Firebase App Distribution لـ Gradle بإرسال الإصدارات مباشرة من مهمة Gradle. يتضمن الإعداد إضافة الإضافة com.google.firebase.appdistribution، وإعداد حساب الخدمة، وتكوين المجموعات المستهدفة. بعد الإعداد، ستقوم مهمة assembleDistRelease ببناء التطبيق وتحميله إلى Firebase App Distribution بأمر واحد.
// build.gradle (module: app)
plugins {
id 'com.android.application'
id 'com.google.firebase.appdistribution'
}
android { // standard config }
firebaseAppDistribution {
appId "1:123456789:android:abc123def456"
serviceCredentialsFile "firebase-sa.json"
groups "qa-team"
releaseNotes "بناء تلقائي"
}
يتطلب توزيع إصدارات iOS عبر Firebase App Distribution إعدادًا إضافيًا لأن Apple تقيد تثبيت التطبيقات خارج App Store. لتوزيع تطبيقات iOS، يجب استخدام شهادات ad-hoc أو مؤسسية من برنامج مطوري Apple. يجب إضافة المختبرين إلى بوابة مطوري Apple كأجهزة للتوزيع ad-hoc، أو استخدام التوزيع المؤسسي دون قيود على الأجهزة.
للتوزيع ad-hoc، تحتاج إلى جمع UDID لجميع أجهزة المختبرين وإضافتها إلى بوابة مطوري Apple. Firebase App Distribution يعرض للمختبرين تعليمات للعثور على UDID ويحفظ تلقائيًا الأجهزة المسجلة. بعد إضافة UDID إلى ملف التعريف التزويدي وبناء IPA، يتلقى المختبرون رابط التثبيت. يوصي Firebase باستخدام شهادة مؤسسية للمشاريع التي تضم عددًا كبيرًا من المختبرين، حيث أن ad-hoc محدود بـ 100 جهاز لكل حساب.
Fastlane هي الأداة الموصى بها لأتمتة بناء تطبيقات iOS. يدير lane match الشهادات وملفات التعريف التزويدية، بينما ينشئ lane sigh IPA للتوزيع. يتكامل Firebase App Distribution مع Fastlane عبر إضافة firebase_app_distribution، التي تقوم بتحميل IPA وإخطار المختبرين. يدعم Fastlane أيضًا إدارة الإصدارات وملاحظات الإصدار عبر إضافات إضافية.
# Fastfile
lane :beta do
match(type: :adhoc)
gym(scheme: "MyApp", export_method: "ad-hoc")
firebase_app_distribution(
app: "1:123456789:ios:abc123def456",
groups: "qa-team",
release_notes: "بناء من #\{Time.now.strftime
('%Y-%m-%d %H:%M')}"
)
end
يتيح التكامل الكامل لـ Firebase App Distribution مع CI/CD نشر إصدارات جديدة تلقائيًا مع كل commit في المستودع. من خلال إعداد خط أنابيب CI، يحصل الفريق على ملاحظات فورية من المختبرين بعد دقائق من دفع الكود. يدعم App Distribution جميع أنظمة CI الشائعة: GitHub Actions، GitLab CI، Jenkins، Bitrise و CircleCI. تتطلب كل منصة تكوينها الخاص، لكن المبدأ العام هو نفسه: بناء → تحميل → إخطار.
تتيح GitHub Actions إعداد التوزيع التلقائي للإصدارات عند الدفع إلى فرع develop أو عند إنشاء pull request. يتضمن سير العمل تثبيت Java/Flutter/Node.js، وبناء التطبيق، والمصادقة عبر حساب خدمة Firebase، وتشغيل Firebase CLI بأمر distribute. يتم تخزين الأسرار (الرموز، حسابات الخدمة) في GitHub Secrets ولا يتم كشفها في سجلات البناء. لنظام iOS، يلزم إعداد Xcode وتثبيت Fastlane في سير العمل بشكل إضافي.
# .github/workflows/distribute.yml
name: Distribute to Firebase
on:
push: { branches: [ develop ] }
jobs:
build-and-distribute:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v3
with: { distribution: "temurin", java-version: "17" }
- name: Build APK
run: ./gradlew assembleDebug
- name: Upload to Firebase
uses: wzieba/Firebase-Distribution-GitHub-Action@v1
with:
appId: "${{ secrets.FIREBASE_APP_ID }}"
serviceCredentialsFileContent: "${{ secrets.FIREBASE_SA_KEY }}"
groups: qa-team
file: app/build/outputs/apk/debug/app-debug.apk
يتكامل Firebase App Distribution مع Firebase Crashlytics لجمع تقارير الأعطال تلقائيًا من المختبرين. يقوم Crashlytics تلقائيًا بربط العطل بإصدار بناء وجهاز محددين، مما يساعد في تحديد المشكلة وإصلاحها بسرعة. يمكن للمختبرين أيضًا إرسال لقطات شاشة وتعليقات عبر واجهة الويب الخاصة بـ App Distribution، والحصول على رابط نموذج الملاحظات بعد تثبيت الإصدار.
الأسئلة الشائعة
Firebase App Distribution هو خدمة متعددة المنصات (Android + iOS)، على عكس TestFlight الذي يعمل فقط لنظام iOS. يتكامل App Distribution أيضًا مع Crashlytics و Firebase Analytics، مما يوفر نظامًا بيئيًا موحدًا للاختبار التجريبي على كلتا المنصتين.
يتم تخزين الإصدارات لمدة 150 يومًا من تاريخ التحميل. بعد هذه الفترة، يتم حذفها تلقائيًا. يُنصح بتحميل إصدارات جديدة بانتظام وحذف القديمة يدويًا عبر Firebase Console لمنع المختبرين من تثبيت الإصدارات القديمة.
لا يوجد حد لعدد المختبرين في Firebase App Distribution. لتوزيع iOS ad-hoc، ينطبق حد Apple البالغ 100 جهاز لكل حساب. لتوزيع Android و iOS المؤسسي، لا توجد قيود على عدد المختبرين.
نعم، يدعم App Distribution AAB (Android App Bundle). يقوم Firebase تلقائيًا بإنشاء APK من AAB لكل جهاز مختبر باستخدام Google Play App Signing. هذا مناسب بشكل خاص للاختبار قبل النشر في Play Store.
نعم، App Distribution مضمن في خطة Spark المجانية لـ Firebase. حدود خطة Spark: حتى 500 مختبر و 25 000 تثبيت شهريًا لكل مشروع. خطة Blaze تزيل هذه الحدود وتضيف دعمًا ذا أولوية.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا