این آموزش نحوه ساخت یک برنامه ساده iOS با استفاده از Bazel را پوشش می دهد.
چیزی که یاد خواهید گرفت
در این آموزش یاد می گیرید که چگونه:
- با نصب Bazel و Xcode و دانلود نمونه پروژه محیط را راه اندازی کنید
- یک فضای کاری Bazel که حاوی کد منبع برنامه و یک فایل
WORKSPACE
است که سطح بالای فهرست فضای کاری را مشخص می کند تنظیم کنید. - فایل
WORKSPACE
را بهروزرسانی کنید تا حاوی ارجاعاتی به وابستگیهای خارجی مورد نیاز باشد - یک فایل
BUILD
ایجاد کنید - Bazel را اجرا کنید تا اپلیکیشن شبیه ساز و یک دستگاه iOS بسازید
- برنامه را در شبیه ساز و در دستگاه iOS اجرا کنید
محیط خود را تنظیم کنید
برای شروع، Bazel و Xcode را نصب کنید و نمونه پروژه را دریافت کنید.
Bazel را نصب کنید
دستورالعمل های نصب را برای نصب Bazel و وابستگی های آن دنبال کنید.
Xcode را نصب کنید
Xcode را دانلود و نصب کنید. Xcode شامل کامپایلرها، SDKها و سایر ابزارهای مورد نیاز Bazel برای ساخت برنامه های اپل است.
نمونه پروژه را دریافت کنید
همچنین باید نمونه پروژه آموزش را از گیت هاب دریافت کنید. مخزن 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
است که حاوی دستورالعملهایی است که Bazel برای ساختن نرمافزار استفاده میکند. فضای کاری ممکن است حاوی پیوندهای نمادین به دایرکتوری های خروجی نیز باشد.
دایرکتوری فضای کاری می تواند در هر نقطه از سیستم فایل شما قرار داشته باشد و با وجود فایل WORKSPACE
در ریشه آن مشخص می شود. در این آموزش، دایرکتوری فضای کاری شما $HOME/examples/tutorial/
است که حاوی نمونه فایل های پروژه ای است که در مرحله قبل از مخزن GitHub کلون کرده اید.
برای راحتی شما، متغیر محیطی $WORKSPACE
را اکنون تنظیم کنید تا به دایرکتوری فضای کاری شما مراجعه کند. در خط فرمان وارد کنید:
export WORKSPACE=$HOME/examples/tutorial
یک فایل WORKSPACE ایجاد کنید
هر فضای کاری باید یک فایل متنی به نام WORKSPACE
داشته باشد که در دایرکتوری فضای کاری سطح بالا قرار دارد. این فایل ممکن است خالی باشد یا ممکن است حاوی ارجاعاتی به وابستگی های خارجی مورد نیاز برای ساخت نرم افزار باشد.
در حال حاضر، شما یک فایل WORKSPACE
خالی ایجاد خواهید کرد، که به سادگی برای شناسایی دایرکتوری فضای کاری خدمت می کند. در مراحل بعدی، فایل را برای اضافه کردن اطلاعات وابستگی خارجی بهروزرسانی خواهید کرد.
در خط فرمان موارد زیر را وارد کنید:
touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE
این فایل خالی WORKSPACE
را ایجاد و باز می کند.
فایل WORKSPACE را به روز کنید
برای ساخت برنامههای کاربردی برای دستگاههای اپل، Bazel باید آخرین قوانین ساخت اپل را از مخزن 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 باید هر زمان که بیلد اجرا می شود، قوانین ساخت را از مخزن GitHub خود بارگیری کند. برای در دسترس قرار دادن این قوانین برای پروژه خود، عبارت بارگذاری زیر را به ابتدای فایل BUILD
خود اضافه کنید:
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")
شما فقط باید قانون ios_application را بارگیری کنید زیرا قانون ios_application
در بسته objc_library
شده است.
یک قانون 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 برنامه نمونه را راه اندازی و می سازد. در طول فرآیند ساخت، خروجی آن مشابه موارد زیر ظاهر می شود:
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 اجرا کنید. ابتدا با استفاده از Tulsi یک پروژه Xcode ایجاد کنید.
سپس، پروژه را در Xcode باز کنید، یک شبیه ساز iOS را به عنوان طرح زمان اجرا انتخاب کنید و روی Run کلیک کنید.
برنامه را برای یک دستگاه بسازید
برای ساخت برنامه خود به گونهای که روی دستگاه iOS نصب و راهاندازی شود، Bazel به نمایه تأمین مناسب برای آن مدل دستگاه نیاز دارد. موارد زیر را انجام دهید:
به حساب توسعه دهنده اپل خود بروید و نمایه تهیه مناسب دستگاه خود را دانلود کنید. برای اطلاعات بیشتر به مستندات اپل مراجعه کنید.
نمایه خود را به
$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 برای ساخت اپلیکیشن خود با استفاده از رابط کاربری گرافیکی به جای خط فرمان استفاده کنید.
برنامه را روی دستگاه نصب کنید
ساده ترین راه برای نصب برنامه روی دستگاه، راه اندازی Xcode و استفاده از دستور Windows > Devices
است. دستگاه وصل شده خود را از لیست سمت چپ انتخاب کنید، سپس با کلیک کردن روی دکمه افزودن (علامت به اضافه) در زیر «برنامههای نصبشده» و انتخاب فایل .ipa
که ساختهاید، برنامه را اضافه کنید.
اگر برنامه شما بر روی دستگاه شما نصب نشد، مطمئن شوید که نمایه تامین صحیح را در فایل BUILD
خود مشخص کرده اید (مرحله 4 در بخش قبل).
اگر برنامهتان راهاندازی نشد، مطمئن شوید که دستگاهتان بخشی از نمایه تأمینکننده شما است. دکمه View Device Logs
در صفحه Devices
در Xcode ممکن است اطلاعات دیگری را در مورد اینکه چه اشتباهی رخ داده است ارائه دهد.
بیشتر خواندن
برای جزئیات بیشتر، شعبه اصلی مخزن GitHub را ببینید.