บทแนะนำนี้ครอบคลุมวิธีสร้างแอป iOS แบบง่ายๆ โดยใช้ Bazel
สิ่งที่คุณจะได้เรียนรู้
ในบทแนะนำนี้ คุณจะได้เรียนรู้วิธีต่อไปนี้
- ตั้งค่าสภาพแวดล้อมโดยการติดตั้ง Bazel และ Xcode แล้วดาวน์โหลด โปรเจ็กต์ตัวอย่าง
- ตั้งค่าพื้นที่ทำงาน Bazel ที่มีซอร์สโค้ด
สำหรับแอปและไฟล์
WORKSPACE
ที่ระบุระดับบนสุดของ ไดเรกทอรีพื้นที่ทำงาน - อัปเดตไฟล์
WORKSPACE
ให้มีการอ้างอิงไปยัง ทรัพยากร Dependency ภายนอก - สร้างไฟล์
BUILD
- เรียกใช้ Bazel เพื่อสร้างแอปสำหรับเครื่องจำลองและอุปกรณ์ iOS
- เรียกใช้แอปในโปรแกรมจำลองและบนอุปกรณ์ iOS
ตั้งค่าสภาพแวดล้อมของคุณ
ในการเริ่มต้นใช้งาน ให้ติดตั้ง Bazel และ Xcode แล้วรับโปรเจ็กต์ตัวอย่าง
ติดตั้ง Bazel
ทำตามวิธีการติดตั้งเพื่อติดตั้ง Bazel และ ทรัพยากร Dependency โดยตรง
ติดตั้ง Xcode
ดาวน์โหลดและติดตั้ง Xcode Xcode มีคอมไพเลอร์, SDK และเครื่องมืออื่นๆ ที่ Bazel ต้องใช้ในการสร้าง แอปพลิเคชันของ Apple
รับโปรเจ็กต์ตัวอย่าง
นอกจากนี้ คุณยังต้องรับโปรเจ็กต์ตัวอย่างสำหรับบทแนะนำจาก GitHub ด้วย GitHub
ที่เก็บมี 2 สาขา ได้แก่ 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 คือไดเรกทอรีที่มีองค์ประกอบ
ไฟล์ต้นฉบับสำหรับโครงการซอฟต์แวร์อย่างน้อย 1 โครงการ รวมถึงไฟล์ WORKSPACE
และ BUILD
ไฟล์ซึ่งมีคำสั่งที่ Bazel ใช้ในการสร้าง
ซอฟต์แวร์ พื้นที่ทำงานอาจมีลิงก์สัญลักษณ์ไปยังเอาต์พุตด้วย
ไดเรกทอรี
ไดเรกทอรีพื้นที่ทำงานอาจอยู่ที่ใดก็ได้ในระบบไฟล์และจะมีข้อความกำกับไว้
โดยการมีไฟล์ WORKSPACE
อยู่ที่รูท ในบทแนะนำนี้
ไดเรกทอรี Workspace คือ $HOME/examples/tutorial/
ซึ่งมีตัวอย่าง
ไฟล์โปรเจ็กต์ที่คุณโคลนจากที่เก็บ GitHub ในขั้นตอนก่อนหน้า
เพื่อความสะดวกของคุณ ให้ตั้งค่าตัวแปรสภาพแวดล้อม $WORKSPACE
ตอนนี้เพื่ออ้างอิงถึง
ไดเรกทอรีพื้นที่ทำงานของคุณ ในบรรทัดคำสั่ง ให้ป้อนข้อมูลต่อไปนี้
export WORKSPACE=$HOME/examples/tutorial
สร้างไฟล์ WORKSPACE
พื้นที่ทำงานทุกแห่งต้องมีไฟล์ข้อความชื่อ WORKSPACE
อยู่ในระดับบนสุด
Google Workspace ได้อย่างคุ้มค่าที่สุด ไฟล์นี้อาจว่างเปล่าหรือมีการอ้างอิง
ไปยังทรัพยากร Dependency ภายนอกที่จำเป็นเพื่อสร้าง
ซอฟต์แวร์
สำหรับตอนนี้ คุณจะสร้างไฟล์ WORKSPACE
ที่ว่างเปล่าซึ่ง
ระบุไดเรกทอรีของพื้นที่ทำงาน ในขั้นตอนถัดไป คุณจะต้องอัปเดตไฟล์เพื่อเพิ่ม
ข้อมูลทรัพยากร Dependency ภายนอก
ป้อนข้อมูลต่อไปนี้ในบรรทัดคำสั่ง
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
เปิดไฟล์ 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
กับ
ตัวอย่างที่สมบูรณ์
ใน Branch ของ 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 Simulator ได้แล้ว อันดับแรก สร้างโปรเจ็กต์ Xcode โดยใช้ Tulsi
จากนั้นเปิดโปรเจ็กต์ใน Xcode เลือก iOS Simulator เป็นรูปแบบรันไทม์ แล้วคลิก Run
สร้างแอปสำหรับอุปกรณ์
หากต้องการสร้างแอปให้ติดตั้งและเปิดใช้ในอุปกรณ์ 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