本教程包含以下步驟:
- 代碼預(yù)覽
- 創(chuàng)建BUILD構(gòu)建文件
- 針對模擬器構(gòu)建應(yīng)用
- 查看構(gòu)建輸出
- 在模擬器環(huán)境運行/調(diào)試應(yīng)用
- 針對設(shè)備構(gòu)建應(yīng)用
- 安裝應(yīng)用到設(shè)備
需要在 Mac OS X 環(huán)境,WORKSPACE
不用配置鲜屏。
查看源文件結(jié)構(gòu)
iOS應(yīng)用源文件在$WORKSPACE/ios-app/UrlGet
目錄烹看。
代碼在這里:https://github.com/bazelbuild/examples/tree/master/tutorial/ios-app/UrlGet
創(chuàng)建BUILD文件
在命令行用vi創(chuàng)建并編輯BUILD文件(其它編輯器也可以):
$ vi $WORKSPACE/ios-app/BUILD
添加一個objc_library
規(guī)則
Bazel針對構(gòu)建iOS應(yīng)用提供了諸多規(guī)則命令。在這里洛史,我們首先使用
objc_library
規(guī)則從源文件和Xib文件構(gòu)建 靜態(tài)庫惯殊。
(這個只是最小的規(guī)則,此外還有ios_application
規(guī)則可以用于構(gòu)建多架構(gòu)的iOS應(yīng)用也殖。)
BUILD的內(nèi)容如下:
objc_library(
name = "UrlGetClasses",
srcs = [
"UrlGet/AppDelegate.m",
"UrlGet/UrlGetViewController.m",
],
hdrs = glob(["UrlGet/*.h"]),
xibs = ["UrlGet/UrlGetViewController.xib"],
)
規(guī)則對應(yīng)的目標名字是UrlGetClasses
土思。
添加objc_binary
規(guī)則
objc_binary
創(chuàng)建一個
bundled應(yīng)用中的二進制可執(zhí)行程序。
BUILD文件添加如下內(nèi)容:
objc_binary(
name = "ios-app-binary",
srcs = [
"UrlGet/main.m",
],
deps = [
":UrlGetClasses",
],
)
其中deps
屬性引用了前面的UrlGetClasses
靜態(tài)庫忆嗜。
添加ios_application
規(guī)則
ios_application
規(guī)則用于創(chuàng)建.ipa
打包應(yīng)用己儒,
同時生成Xcode過程文件。
BUILD文件添加如下內(nèi)容:
ios_application(
name = "ios-app",
binary = ":ios-app-binary",
infoplist = "UrlGet/UrlGet-Info.plist",
)
完整的BUILD文件在這里:https://github.com/bazelbuild/examples/blob/master/tutorial/ios-app/BUILD
構(gòu)建模擬器環(huán)境的應(yīng)用
命令行環(huán)境捆毫,確保當前目錄對應(yīng)Bazel的workspace:
$ cd $WORKSPACE
輸入以下命令構(gòu)建應(yīng)用:
$ bazel build //ios-app:ios-app
Bazel將啟動構(gòu)建工作闪湾。當構(gòu)建完成時,輸出類似下面的信息:
INFO: Found 1 target...
Target //ios-app:ios-app up-to-date:
bazel-bin/ios-app/ios-app.ipa
bazel-bin/ios-app/ios-app.xcodeproj/project.pbxproj
INFO: Elapsed time: 3.765s, Critical Path: 3.44s
查找構(gòu)建的輸出
輸出的.ipa
和其它文件在$WORKSPACE/bazel-bin/ios-app
目錄绩卤。
模擬器環(huán)境運行/調(diào)試應(yīng)用
現(xiàn)在可以從Xcode環(huán)境的模擬器來運行應(yīng)用途样。先打開$WORKSPACE/bazel-bin/ios-app/ios-app.xcodeproj
工程文件江醇,
然后選擇相應(yīng)版本的iOS模擬器,然后點擊 Run 按鈕運行何暇。
注意: 如果要Xcode工程中的任何信息發(fā)生變化(比如刪除文件或添加/改變依賴)陶夜,必須使用Bazel重新生成Xcode工程文件。
針對設(shè)備構(gòu)建應(yīng)用
針對設(shè)備構(gòu)建應(yīng)用裆站,需要設(shè)置bazel以找到目標對應(yīng)設(shè)備的provisioning profile配置文件条辟。
根據(jù)以下步驟設(shè)置:
打開網(wǎng)頁 Apple Profiles
下載設(shè)備對應(yīng)的provisioning profile配置文件。
如果又疑問宏胯,請參考 Apple's documentation捂贿。將profile配置文件放到
$WORKSPACE/tools/objc
目錄。可選操作 - 可以在
.gitignore
中忽略配置文件胳嘲。-
編輯
$WORKSPACE/tools/objc/BUILD
文件,添加:filegroup( name = "default_provisioning_profile", srcs = ["<NAME OF YOUR PROFILE>.mobileprovision"], )
現(xiàn)在可以構(gòu)建針對設(shè)備的應(yīng)用了:
$ bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64
上面的命令將構(gòu)建針對多個類型的設(shè)備應(yīng)用扣草。如果只需要構(gòu)建真的特定類型的應(yīng)用了牛,
可以指定一個特定的設(shè)備架構(gòu)體系結(jié)構(gòu)。
如果需要選擇一個特定版本的Xcode或特定版本的SDK辰妙,可以通過--xcode_version=7.2 --ios_sdk_version=9.2
指定鹰祸。
要確保選定版本的SDK對應(yīng)的Xcode已經(jīng)安裝到本機。
如果需要指定一個能夠運行的最小iOS版本密浑,可以通過--ios_minimum_os=7.0
指定蛙婴。
安裝應(yīng)用到設(shè)備上
安裝應(yīng)用到設(shè)備最簡單的方法是打開Xcode,然后點擊Windows > Devices
菜單尔破。
從左邊列表選擇相應(yīng)的設(shè)備街图,點擊 "+" 按鈕并選擇生成的 .ipa
文件。
如果程序沒有運行懒构,請檢查設(shè)備和provisioning profile配置是否匹配餐济。
點擊Devices
下面的View Device Logs
按鈕,可以查看到相關(guān)的錯誤信息胆剧。