המדריך הזה מסביר איך לבנות אפליקציה פשוטה ל-iOS באמצעות Bazel.
מה תלמדו
במדריך הזה לומדים איך:
- הגדרת הסביבה על ידי התקנת Bazel ו-Xcode והורדת הפרויקט לדוגמה
- הגדרת סביבת עבודה של Bazel שהכילה את קוד המקור של האפליקציה, וקובץ
WORKSPACE
המזהה את הרמה העליונה של הספרייה בסביבת העבודה - יש לעדכן את הקובץ
WORKSPACE
כך שיכלול הפניות לתלויות החיצוניות הנדרשות - יצירת קובץ
BUILD
- אפשר להריץ את Bazel כדי לבנות את האפליקציה לסימולטור ולמכשיר iOS
- אפשר להפעיל את האפליקציה בסימולטור ובמכשיר iOS
הגדרת הסביבה שלך
כדי להתחיל, יש להתקין את Bazel ו-Xcode ולקבל את הפרויקט לדוגמה.
התקנת בזל
פועלים לפי הוראות ההתקנה כדי להתקין את 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
ו-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 צריכה לשלוף את
כללי ה-build האחרונים של 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
בשורת פקודה, פותחים קובץ BUILD
חדש לעריכה:
touch $WORKSPACE/ios-app/BUILD
open -a Xcode $WORKSPACE/ios-app/BUILD
הוספה של הצהרת הטעינה של הכלל
כדי לבנות יעדי iOS, ב-Bazel צריכים לטעון כללי build ממאגר הנתונים של GitHub
בכל פעם ש-build פועל. כדי שהכללים האלה יהיו זמינים לפרויקט שלך, יש להוסיף את הצהרת הטעינה הבאה בתחילת הקובץ 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.
בנייה ופריסה של האפליקציה
עכשיו אתם מוכנים לבנות את האפליקציה שלכם ולפרוס אותה בסימולטור וגם במכשיר iOS.
האפליקציה המובנית ממוקמת בספרייה $WORKSPACE/bazel-bin
.
קובצי WORKSPACE
ו-BUILD
שהושלמו עבור המדריך הזה נמצאים בסניף הראשי
של GitHub. תוכלו להשוות את העבודה שלכם לקבצים שהושלמו
כדי לקבל עזרה נוספת או לפתור בעיות.
פיתוח האפליקציה של הסימולטור
חשוב לוודא שספריית העבודה הנוכחית נמצאת בסביבת העבודה של Bazel:
cd $WORKSPACE
כדי ליצור אפליקציה לדוגמה, מזינים את הפרטים הבאים:
bazel build //ios-app:ios-app
Bazel פותחת ובונה את האפליקציה לדוגמה. במהלך ה-build, הפלט שלו יוצג באופן הבא:
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
איך למצוא את פלטי ה-build
הקובץ .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
ה אפליקציה הזו יוצרת בינארית של שומן. כדי לבנות ארכיטקטורת מכשיר ספציפית, יש להקצות אותה באפשרויות ה-build.
כדי ליצור גרסת 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.