Bazel教程:構建iOS應用[翻譯]

Bazel教程:構建iOS應用

本教程包含如下步驟(Bazel新用戶請先參考: Bazel入門教程):html

  • 代碼預覽
  • 建立BUILD構建文件
  • 針對模擬器構建應用
  • 查看構建輸出
  • 在模擬器環境運行/調試應用
  • 針對設備構建應用
  • 安裝應用到設備

須要在 Mac OS X 環境,WORKSPACE 不用配置。python

查看源文件結構

iOS應用源文件在$WORKSPACE/ios-app/UrlGet目錄。ios

代碼在這裏:https://github.com/bazelbuild/examples/tree/master/tutorial/ios-app/UrlGetgit

建立BUILD文件

在命令行用vi建立並編輯BUILD文件(其它編輯器也能夠):github

$ vi $WORKSPACE/ios-app/BUILD

添加一個objc_library規則

Bazel針對構建iOS應用提供了諸多規則命令。在這裏,咱們首先使用 objc_library 規則從源文件和Xib文件構建 靜態庫。 (這個只是最小的規則,此外還有ios_application規則能夠用於構建多架構的iOS應用。)objective-c

BUILD的內容以下:xcode

objc_library(
    name = "UrlGetClasses",
    srcs = [
        "UrlGet/AppDelegate.m",
        "UrlGet/UrlGetViewController.m",
    ],
    hdrs = glob(["UrlGet/*.h"]),
    xibs = ["UrlGet/UrlGetViewController.xib"],
)

規則對應的目標名字是UrlGetClassesbash

添加objc_binary規則

objc_binary 建立一個 bundled應用中的二進制可執行程序。架構

BUILD文件添加以下內容:app

objc_binary(
    name = "ios-app-binary",
    srcs = [
        "UrlGet/main.m",
    ],
    deps = [
        ":UrlGetClasses",
    ],
)

其中deps屬性引用了前面的UrlGetClasses靜態庫。

添加ios_application規則

ios_application 規則用於建立.ipa打包應用, 同時生成Xcode過程文件。

BUILD文件添加以下內容:

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

構建模擬器環境的應用

命令行環境,確保當前目錄對應Bazel的workspace:

$ 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
  bazel-bin/ios-app/ios-app.xcodeproj/project.pbxproj
INFO: Elapsed time: 3.765s, Critical Path: 3.44s

查找構建的輸出

輸出的.ipa和其它文件在$WORKSPACE/bazel-bin/ios-app目錄。

模擬器環境運行/調試應用

如今能夠從Xcode環境的模擬器來運行應用。先打開$WORKSPACE/bazel-bin/ios-app/ios-app.xcodeproj工程文件, 而後選擇相應版本的iOS模擬器,而後點擊 Run 按鈕運行。

注意: 若是要Xcode工程中的任何信息發生變化(好比刪除文件或添加/改變依賴),必須使用Bazel從新生成Xcode工程文件。

針對設備構建應用

針對設備構建應用,須要設置bazel以找到目標對應設備的provisioning profile配置文件。 根據如下步驟設置:

  1. 打開網頁 Apple Profiles 下載設備對應的provisioning profile配置文件。 若是又疑問,請參考 Apple's documentation

  2. 將profile配置文件放到$WORKSPACE/tools/objc目錄。

  3. 可選操做 - 能夠在.gitignore中忽略配置文件。

  4. 編輯 $WORKSPACE/tools/objc/BUILD 文件,添加:

    filegroup(
        name = "default_provisioning_profile",
        srcs = ["<NAME OF YOUR PROFILE>.mobileprovision"],
    )

如今能夠構建針對設備的應用了:

$ bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64

上面的命令將構建針對多個類型的設備應用。若是隻須要構建真的特定類型的應用, 能夠指定一個特定的設備架構體系結構。

若是須要選擇一個特定版本的Xcode或特定版本的SDK,能夠經過--xcode_version=7.2 --ios_sdk_version=9.2指定。 要確保選定版本的SDK對應的Xcode已經安裝到本機。

若是須要指定一個可以運行的最小iOS版本,能夠經過--ios_minimum_os=7.0指定。

安裝應用到設備上

安裝應用到設備最簡單的方法是打開Xcode,而後點擊Windows > Devices菜單。 從左邊列表選擇相應的設備,點擊 "+" 按鈕並選擇生成的 .ipa 文件。

若是程序沒有運行,請檢查設備和provisioning profile配置是否匹配。 點擊Devices下面的View Device Logs按鈕,能夠查看到相關的錯誤信息。


https://chai2010.cn/

相關文章
相關標籤/搜索