البرنامج التعليمي بازل: إنشاء تطبيق iOS

يتناول هذا البرنامج التعليمي كيفية إنشاء تطبيق iOS بسيط باستخدام Bazel.

ما ستتعرَّف عليه

ستتعرّف في هذا البرنامج التعليمي على كيفية:

  • إعداد البيئة من خلال تثبيت Bazel وXcode، وتنزيل نموذج المشروع
  • إعداد بازيلمساحة العمل الذي يحتوي على رمز المصدر للتطبيقWORKSPACE ملف يحدد المستوى الأعلى من دليل مساحة العمل
  • حدّث ملف WORKSPACE لاحتواء مراجع على العناصر الاعتمادية الخارجية المطلوبة
  • إنشاء ملف BUILD
  • شغِّل Bazel لإنشاء التطبيق لجهاز المحاكاة وجهاز يعمل بنظام التشغيل iOS.
  • شغِّل التطبيق في المحاكي وعلى جهاز يعمل بنظام التشغيل iOS.

إعداد بيئتك

للبدء، ثبِّت Bazel وXcode، واحصل على نموذج للمشروع.

تثبيت Bazel

اتّبِع تعليمات التثبيت لتثبيت Bazel وتبعياتها.

تثبيت Xcode

نزِّل Xcode وثبِّته. يحتوي Xcode على برامج التحويل البرمجي وحزم SDK والأدوات الأخرى التي تتطلبها Bazel لإنشاء تطبيقات Apple.

الحصول على نموذج المشروع

تحتاج أيضًا إلى الحصول على نموذج مشروع للبرنامج التعليمي من GitHub. يرتكز فريق GitHub على فرعَين: source-only وmain. يحتوي الفرع source-only على الملفات المصدر للمشروع فقط. ستستخدم الملفات المذكورة في هذا الفرع في هذا البرنامج التعليمي. يحتوي الفرع main على كل من الملفات المصدر وملفات Bazel WORKSPACE وBUILD المكتملة. يمكنك استخدام الملفات في هذا الفرع لفحص عملك عند إكمال خطوات البرنامج التعليمي.

أدخل ما يلي في سطر الأوامر للحصول على الملفات في فرع source-only:

cd $HOME
git clone -b source-only https://github.com/bazelbuild/examples

ينشئ الأمر git clone دليلاً اسمه $HOME/examples/. يحتوي هذا الدليل على عدة مشاريع لـ Bazel. ملفات المشروع لهذا البرنامج التعليمي هي $HOME/examples/tutorial/ios-app.

إعداد مساحة عمل

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

يمكن وضع دليل مساحة العمل في أي مكان على نظام الملفات للإشارة إلى وجود ملف WORKSPACE في جذره. في هذا الدليل التوجيهي، دليلك في مساحة العمل هو $HOME/examples/tutorial/ الذي يحتوي على نماذج ملفات المشروع التي نسختها من تقرير GitHub في الخطوة السابقة.

للتيسير عليك، يمكنك ضبط متغير بيئة $WORKSPACE الآن للرجوع إلى دليل مساحة العمل. في سطر الأوامر، أدخِل:

export WORKSPACE=$HOME/examples/tutorial

إنشاء ملف WORKSPACE

يجب أن تحتوي كل مساحة عمل على ملف نصي اسمه WORKSPACE في دليل مساحة العمل ذات المستوى الأعلى. قد يكون هذا الملف فارغًا أو قد يحتوي على مراجع للتبعيات الخارجية المطلوبة لإنشاء البرنامج.

في الوقت الحالي، ستنشئ ملف WORKSPACE فارغًا يعمل ببساطة على تحديد دليل مساحة العمل. في الخطوات التالية، عليك تعديل الملف لإضافة معلومات الاعتمادية الخارجية.

أدخل ما يلي في سطر الأوامر:

touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE

يؤدي هذا إلى إنشاء ملف WORKSPACE فارغ وفتحه.

تحديث ملف WORKSPACE

لإنشاء تطبيقات لأجهزة Apple، على Bazel سحب أحدث قواعد Apple من مستودع GitHub. لتفعيل ذلك، أضِف قواعد git_repository التالية إلى ملف WORKSPACE:

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(
    name = "build_bazel_rules_apple",
    remote = "https://github.com/bazelbuild/rules_apple.git",
    tag = "0.19.0",
)

git_repository(
    name = "build_bazel_rules_swift",
    remote = "https://github.com/bazelbuild/rules_swift.git",
    tag = "0.13.0",
)

git_repository(
    name = "build_bazel_apple_support",
    remote = "https://github.com/bazelbuild/apple_support.git",
    tag = "0.7.2",
)

git_repository(
    name = "bazel_skylib",
    remote = "https://github.com/bazelbuild/bazel-skylib.git",
    tag = "0.9.0",
)

مراجعة الملفات المصدر

ألقِ نظرة على ملفات المصدر للتطبيق في $WORKSPACE/ios-app/UrlGet. مرة أخرى، أنت تستعرض هذه الملفات الآن لتتعرّف على بنية التطبيق. ليس عليك تعديل أي من الملفات المصدر لإكمال هذا البرنامج التعليمي.

إنشاء ملف مضمّن

في موجه الأوامر، افتح ملف BUILD جديدًا للتعديل:

touch $WORKSPACE/ios-app/BUILD
open -a Xcode $WORKSPACE/ios-app/BUILD

إضافة عبارة تحميل القاعدة

لإنشاء أهداف iOS، يحتاج Bazel إلى تحميل قواعد الإصدار من مستودع GitHub عند تشغيل الإصدار. لإتاحة هذه القواعد لمشروعك، أضِف عبارة التحميل التالية إلى بداية ملف BUILD:

load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")

ما عليك سوى تحميل القاعدة ios_application لأنّ قاعدة objc_library مدمجة في حزمة Bazel.

إضافة قاعدة objc_library

يقدّم تطبيق Bazel عدة قواعد إصدار يمكنك استخدامها لإنشاء تطبيق لنظام التشغيل iOS. في هذا البرنامج التعليمي، عليك أولاً استخدام القاعدة objc_library لإخبار Bazel بكيفية إنشاء مكتبة ثابتة من رمز مصدر التطبيق وملفات Xib. وبعد ذلك، ستستخدم قاعدة ios_application لإبلاغها بكيفية إنشاء البرنامج الثنائي للتطبيق وحزمة .ipa.

أضِف ما يلي إلى ملف BUILD:

objc_library(
    name = "UrlGetClasses",
    srcs = [
         "UrlGet/AppDelegate.m",
         "UrlGet/UrlGetViewController.m",
         "UrlGet/main.m",
    ],
    hdrs = glob(["UrlGet/*.h"]),
    data = ["UrlGet/UrlGetViewController.xib"],
)

دوِّن اسم القاعدة، UrlGetClasses.

إضافة قاعدة ios_application

تنشئ قاعدة ios_application التطبيق الثنائي وتنشئ ملف الحزمة .ipa.

أضِف ما يلي إلى ملف BUILD:

ios_application(
    name = "ios-app",
    bundle_id = "Google.UrlGet",
    families = [
        "iphone",
        "ipad",
    ],
    minimum_os_version = "9.0",
    infoplists = [":UrlGet/UrlGet-Info.plist"],
    visibility = ["//visibility:public"],
    deps = [":UrlGetClasses"],
)

لاحظ أن السمة deps تشير إلى مخرجات القاعدة UrlGetClasses التي أضفتها إلى الملف BUILD أعلاه.

الآن، احفظ الملف وأغلقه. يمكنك مقارنة ملف BUILD مع المثال المكتمل في فرع main من GitHub Repo.

إنشاء التطبيق ونشره

يمكنك الآن إنشاء تطبيقك ونشره على جهاز محاكاة وعلى جهاز يعمل بنظام التشغيل iOS.

يتوفّر التطبيق المدمج في دليل $WORKSPACE/bazel-bin.

تم العثور على ملفات WORKSPACE وBUILD المكتملة لهذا البرنامج التعليمي في الفرع الرئيسي من تقرير GitHub. يمكنك مقارنة عملك بالملفات المكتملة للحصول على مزيد من المساعدة أو تحديد المشاكل وحلّها.

إنشاء التطبيق للمحاكي

تأكّد من أنّ دليل العمل الحالي مضمّن في مساحة عمل Bazel:

cd $WORKSPACE

والآن، أدخل ما يلي لإنشاء نموذج التطبيق:

bazel build //ios-app:ios-app

تعمل شركة Bazel على إطلاق تطبيق تجريبي وتطويره. أثناء عملية الإصدار، سيظهر الناتج مشابهًا لما يلي:

INFO: Found 1 target...
Target //ios-app:ios-app up-to-date:
  bazel-bin/ios-app/ios-app.ipa
INFO: Elapsed time: 0.565s, Critical Path: 0.44s

العثور على مخرجات الإصدار

يمكن العثور على ملف .ipa ومخرجات أخرى في الدليل $WORKSPACE/bazel-bin/ios-app.

شغِّل التطبيق وأصلحه في المحاكي.

يمكنك الآن تشغيل التطبيق من Xcode باستخدام محاكي iOS. أولاً، أنشئ مشروع Xcode باستخدام Tulsi.

بعد ذلك، افتح المشروع في Xcode، واختر "محاكي iOS" كمخطط وقت التشغيل، وانقر على تشغيل.

إنشاء التطبيق لجهاز

لإنشاء تطبيقك بحيث يتم تثبيته وتشغيله على جهاز يعمل بنظام التشغيل iOS، يحتاج Bazel إلى الملف الشخصي المناسب لإدارة الحسابات لطراز الجهاز هذا. فعليك إجراء ما يلي:

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

  2. عليك نقل ملفك الشخصي إلى $WORKSPACE.

  3. (اختياري) أضِف ملفك الشخصي إلى ملف .gitignore.

  4. أضف السطر التالي إلى هدف ios_application في ملف BUILD:

    provisioning_profile = "<your_profile_name>.mobileprovision",
    

الآن، أنشئ التطبيق لجهازك:

bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64

يؤدي ذلك إلى إنشاء التطبيق كبرنامج ثنائي الدهون. لإنشاء بنية معينة للجهاز، يجب تحديدها في خيارات الإصدار.

لإنشاء إصدار محدَّد من Xcode، استخدِم الخيار --xcode_version. لإنشاء إصدار مخصّص لحزمة تطوير البرامج (SDK)، يُرجى استخدام الخيار --ios_sdk_version. يكفي استخدام الخيار --xcode_version في معظم السيناريوهات.

لتحديد الحد الأدنى المطلوب من نظام التشغيل iOS، أضِف المعلّمة minimum_os_version إلى قاعدة الإصدار ios_application في ملف BUILD.

يمكنك أيضًا استخدام Tulsi لإنشاء تطبيقك باستخدام واجهة مستخدم تصويرية (GUI) بدلاً من سطر الأوامر.

تثبيت التطبيق على جهاز

أسهل طريقة لتثبيت التطبيق على الجهاز هي تشغيل Xcode واستخدام الأمر Windows > Devices. اختَر الجهاز الذي تم توصيله بمصدر للطاقة من القائمة على يمين الصفحة، ثم أضِف التطبيق بالنقر على رمزالإضافة (علامة الجمع) ضمن "التطبيقات المثبّتة" وتحديد.ipa الذي أنشأته.

إذا تعذّر تثبيت تطبيقك على جهازك، تأكّد من تحديد الملف الشخصي الصحيح لإدارة الحسابات في ملف BUILD (الخطوة 4 في القسم السابق).

إذا تعذّر تشغيل التطبيق، تأكّد من أن الجهاز جزء من ملفك الشخصي لإدارة الحسابات. قد يقدّم الزر View Device Logs على شاشة Devices في Xcode معلومات أخرى حول الخطأ الذي حدث.

قراءة إضافية

لمزيد من التفاصيل، راجِع الفرع الرئيسي لتقرير GitHub.