本教學課程說明如何使用 Bazel 建構簡易的 iOS 應用程式。
課程內容
在本教學課程中,您將瞭解以下內容:
- 安裝 Bazel 和 Xcode,然後下載 範例專案
- 設定包含原始碼的 Bazel 工作區
以及
WORKSPACE
檔案,用於識別應用程式的 工作區目錄 - 更新
WORKSPACE
檔案,加入所需必要參照 外部依附元件 - 建立
BUILD
檔案 - 執行 Bazel 建構模擬器和 iOS 裝置適用的應用程式
- 在模擬器和 iOS 裝置上執行應用程式
設定環境
如要開始使用,請安裝 Bazel 和 Xcode,並取得範例專案。
安裝 Bazel
請按照安裝操作說明安裝 Bazel 並 導入抽象化機制
安裝 Xcode
下載並安裝 Xcode。 Xcode 包含 Bazel 建構所需的編譯器、SDK 和其他工具 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
檔案,其中包含 Bazel 用於建構的操作說明
軟體工作區也可能包含輸出內容的符號連結
目錄
工作區目錄可以位於檔案系統中的任何位置,如有標示
WORKSPACE
檔案會發生什麼事在這個教學課程中
工作區目錄為「$HOME/examples/tutorial/
」,內含範例
專案檔案。
為了方便起見,請立即設定 $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 檔案
在指令列提示中,開啟新的 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 平台。在本教學課程中,您將先使用
告知 Bazel 的 objc_library
規則
瞭解如何從應用程式原始碼和 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
檔案與
完整範例
在 GitHub 存放區的 main
分支版本中。
建立及部署應用程式
您現在已準備好建構應用程式,並部署至模擬器中 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
目錄內。
在模擬器中執行應用程式並進行偵錯
您現在可以使用 iOS 模擬器,從 Xcode 執行應用程式。首先 使用 Tulsi 產生 Xcode 專案
接著在 Xcode 中開啟專案,選擇 iOS 模擬器做為執行階段配置。 然後按一下「執行」。
為裝置建構應用程式
如要建構應用程式,以便在 iOS 裝置上安裝及啟動應用程式,Bazel 需要 適當的佈建設定檔請完成下列步驟:
前往 Apple 開發人員帳戶 並為您的裝置下載適當的佈建設定檔。詳情請見 Apple 說明文件 瞭解詳情
將商家檔案移到「
$WORKSPACE
」。(選用) 在
.gitignore
檔案中新增個人資料。在
BUILD
檔案的ios_application
目標中新增以下這行程式碼: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
參數加到 BUILD
檔案中 ios_application
建構規則。
您也可以使用 Tulsi至 使用 GUI (而非指令列) 建構您的應用程式。
在裝置上安裝應用程式
如要在裝置上安裝應用程式,最簡單的方法就是啟動 Xcode,然後使用
Windows > Devices
指令。從清單中選取已接上電源的裝置,步驟如下:
然後點選下方的「新增」 (加號) 按鈕新增應用程式
「已安裝的應用程式」然後選取建構的 .ipa
檔案
如果應用程式無法安裝在裝置上,請務必指定
正確的 BUILD
檔案佈建設定檔 (上一個步驟 4)
部分)。
如果無法啟動應用程式,請確認裝置已加入
佈建設定檔Devices
畫面上的 View Device Logs
按鈕,位置:
Xcode 會提供其他資訊,以說明問題所在。
延伸閱讀
詳情請參閱 主要分支版本 GitHub 存放區中的節點數量