توزيع إصدارات iOS التجريبية بشكل أسرع من خلال App Distribution وFastlane

1- قبل البدء

4cddd34bd261cea0.png

في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية استخدام Firebase App Distribution والمكون الإضافي Fastlane الخاص به لتوزيع تطبيق iOS على المختبِرين وجمع المعرّفات الفريدة للأجهزة الاختبارية وتسجيلها في الملف الشخصي لتوفير المتطلبات اللازمة لتطبيقك كي تتمكّن من دمج Ad Hoc بسرعة في المختبِرين. يَدَان

المعلومات التي ستطّلع عليها

  • كيفية تحميل تطبيق iOS بإصدار تجريبي (Ad Hoc) وتوزيعه على المختبِرين باستخدام Firebase App Distribution وFastlane
  • كيفية الاشتراك كمختبِر وتنزيل التطبيق الموزّع على جهاز اختبار
  • كيفية تسجيل أجهزة الاختبار بسرعة من خلال تصدير معرّفات UDID لأجهزة الاختبار باستخدام المكوّن الإضافي Fastlane الخاص بـ App Distribution.
  • كيفية تعديل الملف الشخصي لإدارة الحسابات لتطبيقك وإعادة تحميله لتوزيعه

المتطلبات

  • حساب Google
  • جهاز Apple مُثبَّت عليه الإصدار XCode 11.7 أو أحدث
  • تطبيق Ad Hoc تجريبي على iOS ومضمّن في Xcode
  • حساب مطوّر برامج Apple مدفوع
  • جهاز iOS فعلي للاختبار.

سيعمل تطبيق محاكي iOS في معظم الدروس التطبيقية حول الترميز، ولكن لا يمكن لمحاكيات Play تنزيل الإصدارات.

لا يزال بإمكانك التحقّق من نجاح الإعداد عن طريق التأكّد من أنّ الزر "تنزيل" في تطبيق الويب لاختبار "توزيع التطبيقات".

2- البدء

إعداد Fastlane

تتكامل ميزة App Distribution مع Fastlane لتتمكَّن من توزيع الإصدارات التجريبية من تطبيقك بشكل مبرمَج. تتكامل ميزة App Distribution مع إعدادات Fastlane.

  1. تثبيت وإعداد Fastlane.
  2. شغِّل fastlane init في الدليل الجذري لمشروعك أثناء عملية الإعداد، ثم اختَر "الإعداد اليدوي". سيظهر لك دليل فرعي باسم fastlane يحتوي على Fastfile وAppfile وPluginfile، ستستخدمه لإعداد خطّ سريع.

تثبيت واجهة سطر الأوامر في Firebase

ستحتاج أيضًا إلى تثبيت واجهة سطر الأوامر في Firebase. إذا كنت تستخدم نظام التشغيل macOS أو Linux، يمكنك تشغيل أمر cURL التالي:

curl -sL https://firebase.tools | bash

إذا كنت تستخدم نظام التشغيل Windows، اقرأ تعليمات التثبيت للحصول على برنامج ثنائي مستقل أو لتثبيته من خلال npm.

بعد تثبيت واجهة سطر الأوامر، يجب أن يبلغ تشغيل firebase --version عن إصدار 12.0.0 أو إصدار أحدث:

$ firebase --version
12.0.0

3- إنشاء تطبيقك باستخدام Fastlane

إنشاء تطبيقك

  1. اضبط بعض المتغيرات العمومية لـ Fastlane في ./fastlane/Appfile.. ضمِّن معرّف تطبيقك ومعرّف Apple:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. أنشئ المسار الأول واستخدِم إجراء Fastlane build_app (المعروف أيضًا باسم gym) لإنشاء تطبيقك من خلال إضافة ما يلي إلى ./fastlane/Fastfile:
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. وقِّع تطبيقك لتوزيعه.

في هذا الدرس التطبيقي، ستتمكّن من إدارة شهادتك وملفك الشخصي باستخدام get_certificates (المعروف أيضًا باسم cert)، الذي ينشئ شهادات التوقيع محليًا ويخزّن كل العناصر في تطبيق macOS Keychain. مع ذلك، ستحتاج عادةً إلى استخدام Fastlane sync_code_signing action (المعروف أيضًا باسم match) لإدارة شهادات توقيع الرموز وملفاته الشخصية الخاصة بفريقك بأمان.

lane :build do
    get_certificates()
    build_app(export_method: "ad-hoc")
end
  1. عليك إعداد ملف شخصي لإدارة الحسابات لتطبيقك باستخدام إجراء get_provisioning_profile (المعروف أيضًا باسم sigh). ويتيح لك ذلك مشاركة تطبيقك مع المختبِرين.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end
  1. [اختياري] إذا لم يسبق لك تشغيل تطبيقك، شغِّل الأمر التالي لإنشاء تطبيقك في وحدة تحكُّم مطوّري البرامج من Apple:

$ fastlane produce --skip_itc

  1. وأخيرًا، أنشئ تطبيقك عن طريق إدارة المسار.

سيُطلب منك إدخال معرّف Apple وكلمة المرور (المحفوظة في Keychain) ومعرّف حزمة تطبيقك.

$ fastlane build

إذا واجهت أيّ مشاكل، يُرجى الاطّلاع على دليل تحديد المشاكل وحلّها في Fastlane.

4. تحميل تطبيقك إلى Firebase

الآن بعد أن أنشأت تطبيقك، أصبحت جاهزًا لتحميله إلى App Distribution.

إنشاء مشروع على Firebase وإعداده

  1. سجّل الدخول إلى Firebase.
  2. في وحدة تحكُّم Firebase، أنشئ مشروعًا جديدًا أو أضِفه، ثم أدخِل اسم "درس تطبيقي حول ترميز تصدير المعرِّف الفريد للمنتج".

لا تحتاج إلى تفعيل "إحصاءات Google" لهذا المشروع.

  1. انقر على إنشاء مشروع.

إضافة تطبيق iOS إلى المشروع

  1. انقر على رمز iOS لإنشاء تطبيق جديد على iOS في Firebase، ثم أدخِل معرّف حزمة تطبيقك.

9c26c130a6c42212.png

  1. عليك تخطّي الخطوات القليلة التالية، ثم النقر على متابعة إلى وحدة التحكّم. يمكنك إضافة حِزم تطوير البرامج (SDK) إلى تطبيقك لاحقًا.

يتوفّر مشروعك وتطبيقك الآن في صفحة نظرة عامة على المشروع.

66f79cc8a97fa8e9.png

تفعيل ميزة توزيع التطبيقات

  1. ضمن "الإصدار" قسم "المراقبة"، انقر على توزيع التطبيقات.
  2. بعد قبول البنود، انقر على "البدء". لتفعيل ميزة "توزيع التطبيقات" في تطبيقك

460213326c2784ae.png

إعداد توزيع في Fastlane

  1. شغِّل الأمر التالي من جذر مشروع iOS لإضافة App Distribution إلى إعدادات Fastlane.

إذا ظهر لك الأمر خيارًا، اختَر الخيار 3: RubyGems.org:

$ fastlane add_plugin firebase_app_distribution

  1. تأكد من تثبيت المكوّن الإضافي:

$ fastlane

من المفترَض أن تظهر في الناتج "fastlane-plugin-firebase_app_distribution" في قائمة المكوّنات الإضافية المثبَّتة.

  1. بعد التأكّد من تثبيت المكوّن الإضافي، حدِّد الخيار 0 للإلغاء.

مصادقة مشروع Firebase

لاستخدام المكوّن الإضافي Fastlane، عليك أولاً مصادقة مشروع Firebase.

  1. شغِّل الأمر التالي لربط واجهة سطر الأوامر بحسابك على Google:

$ firebase login

  1. عندما يطبع الأمر رابط مصادقة، افتح الرابط في المتصفح.
  2. سجِّل الدخول إلى حسابك على Google وامنح الإذن بالوصول إلى مشروع Firebase عندما يُطلب منك ذلك.

توزيع تطبيقك

يمكنك الآن توزيع تطبيقك.

  1. في أعلى ./fastlane/Fastfile، حدِّد متغيّرًا باسم firebase_app_id. استبدِل <your_app_id> برقم تعريف تطبيق Firebase للتطبيق الذي أنشأته (يمكن العثور على ذلك في صفحة إعدادات المشروع).

تمت كتابة Fastfile بلغة Ruby، لذا عليك استخدام بنية Ruby لتحديد المتغيرات.

firebase_app_id = "<your_app_id>"
  1. أضِف ممرًا جديدًا يُسمى distribute يستدعي ممر الإصدار، ثم يوزّع تطبيقك باستخدام إجراء firebase_app_distribution.
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end
  1. ابدأ المسار الجديد لإنشاء تطبيقك وتوزيع تطبيقك.

$ 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، سترى الإصدار الجديد لتطبيقك.

c59dc1a94de3bf3c.png

5- دعوة مختبِرين لتنزيل تطبيقك

عندما يقبل أحد المختبرين دعوة لاختبار إصدار مخصص، سيُطلب منه الإذن بمشاركة معرّفه الفريد (UDID). في حال الموافقة، ستجمع ميزة App Distribution معلومات الجهاز وترسل إليك إشعارًا عبر البريد الإلكتروني. في هذا القسم، ستضيف نفسك كمختبِر لتنزيل التطبيق الذي وزّعته واختباره.

إضافة نفسك كمختبِر إلى الإصدار

  1. ضمن firebase_app_id في أعلى ملف Fastfile، أنشِئ متغيّرًا لإخضاعه للمختبِرين وأدرِج عنوان بريدك الإلكتروني، بالإضافة إلى عناوين البريد الإلكتروني الاختيارية الأخرى التي تريد تجربتها.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
  1. طبِّق طريقة 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
  1. افتح الممر مرة أخرى.

$ fastlane distribute

بعد إكمال الخطوات اللازمة، سيتلقّى المختبِرون الذين أضفتهم دعوة بالبريد الإلكتروني من App Distribution لإعلامهم بالإصدار المتاح حديثًا. من خلال "وحدة تحكُّم Firebase"، يمكنك الآن الاطّلاع على المختبِرين الذين أضفتهم ضمن إصدار تطبيقك.

2e0fc9603b868af8.png

نظرًا لأنك ضمّنت عنوان بريدك الإلكتروني، ستتلقى رسالة إلكترونية من Firebase App Distribution تدعوك إلى اختبار التطبيق. أنت الآن المختبِر الأول! راجِع القسم أدناه لإعدادك كمختبِر على جهاز الاختبار.

تسجيل جهاز الاختبار

بصفتك مختبِرًا، عليك تسجيل الدخول إلى Google على جهازك الاختباري للوصول إلى إصدارات التطبيق التي تمت دعوتك لاختبارها. بما أنّ الإصدار التجريبي هو إصدار مخصّص، عليك أيضًا تسجيل جهاز الاختبار عن طريق تثبيت الملف الشخصي على Firebase. بعد ذلك، يمكن الوصول إلى الإصدارات التي أصبحت متاحة لك من تطبيق الويب لمختبِري App Distribution باستخدام مقطع الويب الذي تتم إضافته إلى الشاشة الرئيسية لجهازك.

  1. على جهاز iOS الاختباري، افتح الرسالة الإلكترونية المُرسَلة من Firebase App Distribution والنقر على رابط البدء. تأكد من فتح الرابط في Safari.
  2. أنت الآن في تطبيق الويب لاختبار App Distribution. في الصفحة التي تظهر، سجِّل الدخول باستخدام حسابك على Google وانقر على قبول الدعوة.

d833407de251b89f.png

  1. يمكنك الآن الاطّلاع على الإصدارات التي تمت دعوتك إليها. انقر على تسجيل الجهاز تحت أحد الإصدارات.

fd141215e54a938d.png

  1. نزِّل الملف الشخصي على Firebase ثم ثبِّته في تطبيق "الإعدادات" عندما يُطلب منك ذلك.

يؤدي تثبيت الملف الشخصي إلى منح Firebase الإذن لتنفيذ ما يلي:

  • يمكنك تسجيل جهاز الاختبار من خلال جمع رقم التعريف الفريد للجهاز (UDID).

يُرسل Firebase رسالة إلكترونية إلى جميع مالكي ومحرري مشروع Firebase تتضمن المعرّف الفريد للجهاز الاختباري.

  • تثبيت مقطع ويب على الشاشة الرئيسية للجهاز الاختباري يفتح مقطع الويب تطبيق الويب الخاص باختبار App Distribution، ما يتيح لك تثبيت جميع تطبيقات الاختبار والوصول إليها.

في تطبيق الويب الخاص بأداة اختبار App Distribution، تم تسجيل جهاز الاختبار الخاص بك الآن في إصدار تطبيقك.

fe93d649dfa25877.png

الآن وبعد مشاركة رقم التعريف الفريد لجهازك الاختباري مع Firebase، يمكنك الآن استئناف العمل كمطوّر. في علامة التبويب "المختبِرون" في لوحة بيانات توزيع التطبيق، تظهر معلومات المختبِر الآن ضمن إصدار تطبيقك مع الحالة "مقبول":

7b9f665a63a384cf.png

في القسم التالي، ستضيف المعرّف الفريد للجهاز إلى الملف الشخصي لإدارة الحسابات لتطبيقك ثم ستنشئ إصدارًا من تطبيقك يعمل مع جهاز الاختبار.

تصدير معرّفات UDID لأجهزة المختبر

بصفتك المطوّر، ستتلقّى رسالة إلكترونية من Firebase تحتوي على المعرّف الفريد للجهاز الاختباري. كخيار، تسهّل ميزة App Distribution إمكانية جمع معرّفات UDID متعددة للأجهزة في وقت واحد بتصديرها مباشرةً من وحدة تحكم Firebase كملف نصي غير منسق.

  1. لتصدير جميع المعرّفات الفريدة للأجهزة (UDID)، افتح مختبِرو "المجموعات".

241a9936898a2fc0.png

  1. انقر على تصدير معرّفات Apple UDIDs.

bcf0c26c522d9b4e.png

يجب أن يحتوي الملف على المعرّف الفريد للجهاز الاختباري.

Device ID            Device Name                            Device Platform
1234567890     udid.codelab.tester@gmail.com - iPhone SE 2nd Gen        ios

يمكن أيضًا تصدير المعرّفات الفريدة للجهاز من سطر الأوامر باستخدام Fastlane، وستنفّذ هذه الخطوة في القسم التالي.

6- تعديل الملف الشخصي لإدارة الحسابات لتطبيقك وإعادة إنشائه

والآن، ستضيف المعرّف UDID لجهاز الاختبار إلى الملف الشخصي لإدارة الحسابات لتطبيقك، وتعيد إنشاء إصدار من تطبيقك يناسب جهازك، وستوزّع الإصدار الجديد.

إضافة ممر تصدير المعرِّف الفريد للجهاز

  1. أضِف متغيّرًا آخر في أعلى Fastfile، واضبطه على مسار ملف حيث يكون للمختبِرين سيتم تنزيل المعرّفات الفريدة للجهاز (UDID)
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"
  1. يمكنك إعداد ممر جديد يستخدم إجراء تصدير UDID للمكوّن الإضافي App Distribution لتنزيل المعرّفات الفريدة للأجهزة (UDID) الخاصة بالمختبِر، تمامًا كما فعلت من وحدة التحكّم.
lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end
  1. شغّل الممر التالي لتنزيل المعرّفات الفريدة للأجهزة (UDID).

$ fastlane download_udids

  1. اطبع الملف الذي تم تنزيله والذي يجب أن يحتوي على المعرّفات UDID لأجهزة الاختبار.

$ cat tester_udids.txt

إضافة الأجهزة إلى Apple Developer Console

  1. أنشئ المسار التالي لإضافة معرّفات UDID إلى قائمة الأجهزة في Play Console من Apple، بحيث يمكنك إضافتها إلى الملف الشخصي لإدارة الحسابات باستخدام إجراء Fastlane register_devices:
lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end
  1. ثم، شغّل الممر:

$ fastlane add_new_devices

من المفترض أن تظهر بعد ذلك الأجهزة الجديدة في قائمة الأجهزة ضمن وحدة تحكّم المطوّرين.

إضافة أجهزة إلى ملفك الشخصي لإدارة الحسابات

  1. يمكنك إضافة الوسيطة force إلى خطوة الملف الشخصي لتوفير المتطلبات اللازمة في المسار build لإجبارها على شراء أجهزة جديدة في كل مرة تنشئ فيها.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

إعادة إدارة المسار للبناء والتحميل

الآن، يمكنك تحديث مسار distribute بالممرات الجديدة لإضافة الأجهزة إلى الملف الشخصي لتوفير المتطلبات اللازمة وإعادة إنشاء التطبيق ثم توزيعه.

  1. الاتصال بالممرات الجديدة من 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
  1. تشغيل الممر 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 لأجهزة الاختبار، يمكن تثبيتها على أجهزة الاختبار.

e275f73d57cc8fb1.png

  1. على جهاز الاختبار، ارجع إلى تطبيق الويب لاختبار ميزة App Distribution باستخدام الرابط الوارد في الرسالة الإلكترونية أو الرمز الظاهر على الشاشة الرئيسية للجهاز.

عند الانتقال إلى تطبيق الدرس التطبيقي حول ترميز UDID، يمكنك التأكّد من أنّ الإصدار جاهز للتنزيل.

dad6d03b6ad78746.png

  1. إذا كنت تستخدم جهازًا فعليًا، اضغط على "تنزيل" ثم ثبِّت التطبيق وشغِّله.

7- تهانينا

لقد ضبطت الآن ميزة App Distribution وFastlane على طريقة برمجة عملية اختبار الإصدار التجريبي. والآن، عندما تريد دعوة مختبِرين إضافيين أو إضافة أرقام التعريف الفريدة للأجهزة (UDID) إلى تطبيقك، ستحتاج إلى تشغيل أمر واحد فقط: fastlane distribute.

لذا، ننصحك بعدم جمع المعرّفات الفريدة للأجهزة (UDID) بشكل فردي من المختبِرين، أو الانتقال إلى وحدة تحكّم المطوّرين من Apple لتعديل قوائم الأجهزة أو الملفات الشخصية لتوفير المتطلبات اللازمة. ولا تحتاج حتى إلى فتح XCode.

من السهل إعداد سير العمل هذا ليتم تشغيله كل ساعة أو يوميًا في بيئة الدمج المستمر.

محتوى إضافي للقراءة