1. قبل البدء
في هذا الدرس العملي، ستتعرّف على كيفية استخدام Firebase App Distribution والإضافة fastlane لتوزيع تطبيق iOS على المختبِرين وجمع أرقام تعريف الأجهزة الفريدة (UDID) الخاصة بأجهزة الاختبار وتسجيلها في ملف الإعداد الخاص بتطبيقك، ما يتيح لك إتاحة الإصدارات المخصّصة بسرعة للمختبِرين.
أهداف الدورة التعليمية
- كيفية تحميل تطبيق iOS مسبق الإصدار وتوزيعه (Ad Hoc) على المختبِرين باستخدام Firebase App Distribution وfastlane
- كيفية الاشتراك كمختبِر وتنزيل التطبيق الموزَّع على جهاز اختباري
- كيفية تسجيل الأجهزة الاختبارية بسرعة من خلال تصدير أرقام التعريف الفريدة للأجهزة الاختبارية باستخدام إضافة fastlane في App Distribution
- كيفية تعديل ملف توفير المتطلبات اللازمة لتطبيقك وإعادة تحميله لتوزيعه
المتطلبات
- حساب Google
- جهاز Apple مثبَّت عليه الإصدار 11.7 أو إصدار أحدث من XCode
- تطبيق iOS مسبق الإصدار مخصّص تم إنشاؤه في Xcode
- حساب مطوِّر على Apple مدفوع
- جهاز iOS فعلي للاختبار
سيعمل تطبيق محاكي iOS مع معظم أجزاء الدرس العملي، ولكن لا يمكن للمحاكيات تنزيل الإصدارات.
سيظل بإمكانك التأكّد من نجاح عملية الإعداد من خلال التحقّق من ظهور الزر "تنزيل" في تطبيق App Distribution على الويب الخاص بالمختبِرين.
2. البدء
إعداد fastlane
تتكامل خدمة "توزيع التطبيق" مع fastlane لتتيح لك إمكانية إعداد عملية توزيع الإصدارات التجريبية من تطبيقك تلقائيًا. تتكامل خدمة "توزيع التطبيق" مع إعدادات fastlane.
- تثبيت fastlane وإعداده
- نفِّذ الأمر
fastlane init
في الدليل الجذر لمشروعك أثناء عملية الإعداد، واختَر "الإعداد اليدوي". سيظهر لك دليل فرعي باسمfastlane
يحتوي علىFastfile
وAppfile
وPluginfile
، وستستخدمها لإعداد fastlane.
تثبيت Firebase CLI
عليك أيضًا تثبيت Firebase CLI. إذا كنت تستخدم نظام التشغيل macOS أو Linux، يمكنك تنفيذ أمر cURL التالي:
curl -sL https://firebase.tools | bash
إذا كنت تستخدم نظام التشغيل Windows، يُرجى قراءة تعليمات التثبيت للحصول على ملف ثنائي مستقل أو للتثبيت من خلال npm
.
بعد تثبيت واجهة سطر الأوامر، يجب أن يؤدي تنفيذ الأمر firebase --version
إلى عرض الإصدار 12.0.0
أو إصدار أحدث:
$ firebase --version 12.0.0
3- إنشاء تطبيقك باستخدام fastlane
إنشاء تطبيقك
- اضبط بعض المتغيّرات العامة لـ fastlane في
./fastlane/Appfile.
. أدرِج رقم تعريف تطبيقك ومعرّف Apple:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- أنشئ مسارك الأول واستخدِم إجراء fastlane
build_app
(المعروف أيضًا باسمgym
) لإنشاء تطبيقك من خلال إضافة ما يلي إلى./fastlane/Fastfile
:
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- وقِّع تطبيقك لتوزيعه.
في هذا الدرس العملي، ستدير شهادتك وملفك الشخصي باستخدام get_certificates
(المعروف أيضًا باسم cert
)، الذي ينشئ شهادات التوقيع محليًا ويخزّن كل شيء في "سلسلة مفاتيح" macOS. ومع ذلك، يُنصح عادةً باستخدام fastlane sync_code_signing action
(المعروف أيضًا باسم match
) لإدارة شهادات وملفات تعريف توقيع الرموز لفريقك بشكل آمن.
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- يمكنك إعداد ملف توفير لتطبيقك باستخدام الإجراء
get_provisioning_profile
(المعروف أيضًا باسمsigh
)، ما يتيح لك مشاركة تطبيقك مع المختبِرين.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [اختياري] إذا لم يسبق لك تشغيل تطبيقك، نفِّذ الأمر التالي لإنشاء تطبيقك في "وحدة تحكّم مطوّري Apple":
$ fastlane produce --skip_itc
- أخيرًا، أنشئ تطبيقك من خلال تشغيل المسار.
سيُطلب منك إدخال معرّف Apple وكلمة المرور (المخزّنة في Keychain) ومعرّف حزمة تطبيقك.
$ fastlane build
إذا واجهت أي مشاكل، يُرجى الاطّلاع على دليل تحديد المشاكل وحلّها في fastlane.
4. تحميل تطبيقك إلى Firebase
بعد إنشاء تطبيقك، يمكنك تحميله إلى App Distribution.
إنشاء مشروع جديد على Firebase
- سجِّل الدخول إلى وحدة تحكّم Firebase باستخدام حسابك على Google.
- انقر على الزر لإنشاء مشروع جديد، ثم أدخِل اسم المشروع (على سبيل المثال،
UDID Export Codelab
). - انقر على متابعة.
- إذا طُلب منك ذلك، راجِع بنود Firebase واقبلها، ثم انقر على متابعة.
- (اختياري) فعِّل ميزة "المساعدة المستندة إلى الذكاء الاصطناعي" في وحدة تحكّم Firebase (المعروفة باسم "Gemini في Firebase").
- في هذا الدرس العملي، لا تحتاج إلى "إحصاءات Google"، لذا أوقِف خيار "إحصاءات Google".
- انقر على إنشاء مشروع، وانتظِر إلى أن يتم توفير مشروعك، ثم انقر على متابعة.
إضافة تطبيق iOS إلى المشروع
- انقر على رمز iOS لإنشاء تطبيق iOS جديد على Firebase، وأدخِل رقم تعريف حزمة تطبيقك.
- تخطَّ الخطوات القليلة التالية، ثم انقر على متابعة إلى وحدة التحكّم. ستضيف حِزم SDK إلى تطبيقك لاحقًا.
يتوفّر مشروعك وتطبيقك الآن في صفحة نظرة عامة على المشروع.
تفعيل App Distribution
- ضمن قسم "الإصدار والمراقبة"، انقر على توزيع التطبيقات.
- بعد قبول البنود، انقر على "البدء" لتفعيل "توزيع التطبيقات" لتطبيقك.
إعداد توزيع في fastlane
- نفِّذ الأمر التالي من جذر مشروع iOS لإضافة App Distribution إلى إعدادات fastlane.
إذا طلب منك الأمر تحديد خيار، اختَر الخيار 3: RubyGems.org:
$ fastlane add_plugin firebase_app_distribution
- تأكَّد من تثبيت المكوّن الإضافي باتّباع الخطوات التالية:
$ fastlane
يجب أن تعرض النتائج fastlane-plugin-firebase_app_distribution
في قائمة المكوّنات الإضافية المثبَّتة.
- بعد التأكّد من تثبيت المكوّن الإضافي، اختَر الخيار 0 للإلغاء.
مصادقة مشروعك على Firebase
لاستخدام المكوّن الإضافي fastlane، عليك أولاً إثبات ملكية مشروعك على Firebase.
- نفِّذ الأمر التالي لربط واجهة سطر الأوامر بحسابك على Google:
$ firebase login
- عندما يعرض الأمر رابط مصادقة، افتح الرابط في متصفّح.
- عندما يُطلب منك ذلك، سجِّل الدخول إلى حسابك على Google وامنح الإذن بالوصول إلى مشروعك على Firebase.
توزيع تطبيقك
أنت الآن جاهز لتوزيع تطبيقك.
- في أعلى
./fastlane/Fastfile
، حدِّد متغيّرًا باسمfirebase_app_id
. استبدِل<your_app_id>
بمعرّف تطبيق Firebase للتطبيق الذي أنشأته (يمكن العثور على هذا المعرّف في صفحة إعدادات المشروع).
تتم كتابة Fastfile
بلغة Ruby، لذا استخدِم بنية Ruby لتحديد المتغيّرات.
firebase_app_id = "<your_app_id>"
- أضِف مسارًا جديدًا باسم
distribute
يستدعي مسار الإنشاء، ثم وزِّع تطبيقك باستخدام الإجراءfirebase_app_distribution
.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- نفِّذ المسار الجديد لإنشاء تطبيقك وإنشاء حزمة توزيع.
$ fastlane distribute
في هذه المرحلة، يجب أن يبدو Fastfile على النحو التالي:
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
بعد إعادة تحميل وحدة تحكّم Firebase، سيظهر لك الإصدار الجديد لتطبيقك.
5- دعوة مختبِرين لتنزيل تطبيقك
عندما يقبل أحد المختبِرين دعوة لاختبار إصدار مخصّص، يُطلب منه منح الإذن بمشاركة معرّف الجهاز الفريد (UDID). إذا وافقوا، ستجمع خدمة App Distribution معلومات أجهزتهم وتُرسل إليك إشعارًا عبر البريد الإلكتروني. في هذا القسم، ستضيف نفسك كمختبِر لتنزيل التطبيق الذي وزّعته واختباره.
إضافة نفسك كمختبِر للإصدار
- ضمن
firebase_app_id
في أعلى Fastfile، أنشئ متغيّرًا لتضمين المختبِرين وأدرِج عنوان بريدك الإلكتروني، بالإضافة إلى عناوين البريد الإلكتروني الاختيارية الأخرى التي تريد تجربتها.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- طبِّق طريقة Array#join في Ruby لتحويل مصفوفة
app_testers
إلى سلسلة مفصولة بفواصل، وهو ما تتوقّعه المَعلمةtesters
. بعد ذلك، مرِّر النتيجة إلى المَعلمةtesters
الخاصة بـfirebase_app_distribution.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
في هذه المرحلة، يُفترض أن يظهر Fastfile على النحو التالي:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- تشغيل الأغنية مرة أخرى
$ fastlane distribute
بعد تشغيل المسار، سيتلقّى المختبِرون الذين أضفتهم دعوة عبر البريد الإلكتروني من "توزيع التطبيقات" لإعلامهم بالإصدار المتاح حديثًا. في وحدة تحكّم Firebase، يمكنك الآن الاطّلاع على المختبِرين الذين أضفتهم ضمن إصدار تطبيقك.
بما أنّك أدرجت عنوان بريدك الإلكتروني، ستتلقّى رسالة إلكترونية من Firebase App Distribution تدعوك إلى اختبار التطبيق. أنت الآن أول مختبِر. تابِع القسم أدناه لإعداد جهازك الاختباري كمختبِر.
تسجيل جهاز الاختبار
بصفتك مختبِرًا، عليك تسجيل الدخول إلى Google على جهاز الاختبار لتتمكّن من الوصول إلى إصدارات التطبيق التي تمت دعوتك لاختبارها. بما أنّ الإصدار التجريبي هو إصدار مخصّص، عليك أيضًا تسجيل جهازك التجريبي من خلال تثبيت ملف Firebase الشخصي. بعد ذلك، يمكنك الوصول إلى الإصدارات المتاحة لك من خلال تطبيق App Distribution على الويب الخاص بالمختبِرين، وذلك باستخدام مقطع الويب الذي تتم إضافته إلى الشاشة الرئيسية لجهازك.
- على جهاز اختبار iOS، افتح الرسالة الإلكترونية المُرسَلة من Firebase App Distribution وانقر على الرابط البدء. احرص على فتح الرابط في Safari.
- أنت الآن في تطبيق App Distribution على الويب المخصّص للمختبِرين. في الصفحة التي تظهر، سجِّل الدخول باستخدام حسابك على Google وانقر على قبول الدعوة.
- يمكنك الآن الاطّلاع على الإصدارات التي تمت دعوتك إليها. انقر على تسجيل الجهاز ضمن أحد الإصدارات.
- عندما يُطلب منك ذلك، نزِّل ملف Firebase الشخصي، ثم ثبِّته في تطبيق "الإعدادات".
يمنح تثبيت الملف الشخصي Firebase الإذن بما يلي:
- سجِّل جهاز الاختبار من خلال جمع المعرّف الفريد للجهاز (UDID).
ترسل Firebase رسالة إلكترونية إلى جميع مالكي مشروع Firebase والمحرّرين فيه تتضمّن المعرّف الفريد للجهاز الاختباري.
- ثبِّت مقطع ويب على الشاشة الرئيسية لجهاز الاختبار. يفتح مقطع الويب تطبيق App Distribution على الويب الخاص بالمختبِرين، ما يتيح لك تثبيت جميع تطبيقاتك التجريبية والوصول إليها.
في تطبيق App Distribution على الويب الخاص بالمختبِرين، تم الآن تسجيل جهاز الاختبار لإصدار تطبيقك.
بعد مشاركة رقم التعريف الفريد لجهازك الاختباري مع Firebase، يمكنك الآن استئناف عملك كمطوّر. في علامة التبويب "المختبِرون" ضمن لوحة بيانات App Distribution، تظهر معلومات المختبِر الآن ضمن إصدار تطبيقك مع الحالة "تم القبول":
في القسم التالي، ستضيف معرّف الجهاز الفريد (UDID) إلى ملف توفير تطبيقك، ثم ستنشئ إصدارًا من تطبيقك يعمل مع جهاز الاختبار.
تصدير أرقام التعريف الفريدة للأجهزة (UDID) الخاصة بأجهزة الاختبار
بصفتك المطوِّر، ستتلقّى رسالة إلكترونية من Firebase تحتوي على رقم التعريف الفريد للجهاز التجريبي. كخيار، يسهّل عليك App Distribution جمع أرقام تعريف الأجهزة الفريدة الجديدة المتعدّدة في وقت واحد من خلال السماح لك بتصديرها مباشرةً من "وحدة تحكّم Firebase" كملف نصي أولي.
- لتصدير جميع أرقام تعريف الأجهزة الفريدة، افتح علامة التبويب المختبِرون والمجموعات.
- انقر على تصدير معرّفات الأجهزة الفريدة من Apple.
يجب أن يحتوي الملف على المعرّف الفريد للجهاز (UDID) لجهاز الاختبار.
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
يمكن أيضًا تصدير أرقام تعريف الأجهزة الفريدة من سطر الأوامر باستخدام fastlane، وهو ما ستفعله في القسم التالي.
6. تعديل ملف توفير المتطلبات اللازمة لتطبيقك وإعادة إنشائه
الآن، عليك إضافة المعرّف الفريد للجهاز (UDID) إلى ملف توفير تطبيقك، وإعادة إنشاء إصدار من تطبيقك يعمل على جهازك، وتوزيع الإصدار الجديد.
إضافة مسار لتصدير رقم التعريف الفريد للجهاز
- أضِف متغيّرًا آخر في أعلى Fastfile، واضبطه على مسار ملف سيتم تنزيل أرقام التعريف الفريدة للأجهزة (UDID) الخاصة بالمختبِرين فيه.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- يمكنك إعداد مسار جديد يستخدم إجراء تصدير UDID الخاص بمكوّن App Distribution الإضافي لتنزيل أرقام تعريف الأجهزة الفريدة (UDID) الخاصة بالمختبِرين، تمامًا كما فعلت من وحدة التحكّم.
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- نفِّذ المسار التالي لتنزيل أرقام تعريف الأجهزة الفريدة (UDID).
$ fastlane download_udids
- اطبع الملف الذي تم تنزيله، والذي من المفترض أن يحتوي على أرقام تعريف الأجهزة الفريدة (UDID) لأجهزة الاختبار.
$ cat tester_udids.txt
إضافة أجهزة إلى Apple Developer Console
- أنشئ المسار التالي لإضافة أرقام تعريف الأجهزة الفريدة (UDID) إلى قائمة الأجهزة في "وحدة تحكّم مطوّري Apple"، حتى تتمكّن من إضافتها إلى ملف الإعداد باستخدام إجراء fastlane's
register_devices
:
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- بعد ذلك، شغِّل المسار:
$ fastlane add_new_devices
بعد ذلك، من المفترض أن تظهر الأجهزة الجديدة في قائمة الأجهزة في "وحدة تحكّم المطوّر".
إضافة أجهزة إلى ملف الإعداد
- أضِف الوسيطة
force
إلى خطوة ملف الإعداد في المسارbuild
، وذلك لإجباره على اختيار أجهزة جديدة في كل مرة تنشئ فيها إصدارًا.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
إعادة تشغيل المسار لإنشاء التطبيق وتحميله
الآن، عليك تعديل المسار distribute
باستخدام المسارات الجديدة لإضافة الأجهزة إلى ملف الإعداد، وإعادة إنشاء التطبيق، ثم توزيعه.
- الاتصال بالمسارات الجديدة من
distribute
:
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
- نفِّذ المسار
distribute
:
$ fastlane distribute
في هذه المرحلة، يُفترض أن يظهر Fastfile على النحو التالي:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
تنزيل الإصدار من الجهاز الاختباري
بعد أن يتضمّن تطبيقك معرّفات الأجهزة الفريدة (UDID) للأجهزة الاختبارية، يمكن تثبيته على هذه الأجهزة.
- على جهاز الاختبار، ارجع إلى تطبيق الويب الخاص باختبار App Distribution باستخدام الرابط الوارد في الرسالة الإلكترونية أو الرمز الظاهر على الشاشة الرئيسية للجهاز.
عند الانتقال إلى تطبيق UDID codelab، يمكنك ملاحظة أنّ الإصدار جاهز للتنزيل.
- إذا كنت تستخدم جهازًا فعليًا، انقر على "تنزيل"، ثم ثبِّت التطبيق وشغِّله.
7. تهانينا
لقد أعددت الآن App Distribution وfastlane لأتمتة عملية اختبار الإصدارات التجريبية. الآن، عندما تريد دعوة مختبِرين إضافيين أو إضافة أرقام تعريف الأجهزة الفريدة الخاصة بهم إلى تطبيقك، عليك تنفيذ أمر واحد فقط: fastlane distribute
.
وبالتالي، لن يكون عليك بعد الآن جمع معرّفات الأجهزة الفريدة (UDID) من المختبِرين بشكل فردي، أو الانتقال إلى "وحدة تحكّم المطوّرين" في Apple لتعديل قوائم الأجهزة أو ملفات الإعداد. ولست بحاجة حتى إلى فتح XCode.
يمكن إعداد سير العمل هذا بسهولة لتشغيله كل ساعة أو يوميًا في بيئة الدمج المتواصل.
محتوى إضافي للقراءة
- استكشِف ميزات خدمة "توزيع التطبيقات على Firebase"، بما في ذلك حزمة تطوير البرامج (SDK) داخل التطبيق لنظام التشغيل iOS.
- مزيد من المعلومات عن fastlane
- إدارة توقيع الرموز البرمجية لفريقك باستخدام
match
- دمج fastlane في عملية التكامل المستمر