يتناول هذا البرنامج التعليمي كيفية إنشاء تطبيق 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 إلى الملف الشخصي المناسب لإدارة الحسابات لطراز الجهاز هذا. فعليك إجراء ما يلي:
انتقِل إلى حساب مطوّر برامج Apple ونزِّل الملف الشخصي المناسب لإدارة الحسابات على جهازك. راجِع وثائق Apple لمزيد من المعلومات.
عليك نقل ملفك الشخصي إلى
$WORKSPACE
.(اختياري) أضِف ملفك الشخصي إلى ملف
.gitignore
.أضف السطر التالي إلى هدف
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.