博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bazel教程:构建iOS应用[翻译]
阅读量:6626 次
发布时间:2019-06-25

本文共 2466 字,大约阅读时间需要 8 分钟。

hot3.png

Bazel教程:构建iOS应用

  • 原文:
  • 译者:

本教程包含以下步骤(Bazel新用户请先参考: ):

  • 代码预览
  • 创建BUILD构建文件
  • 针对模拟器构建应用
  • 查看构建输出
  • 在模拟器环境运行/调试应用
  • 针对设备构建应用
  • 安装应用到设备

需要在 Mac OS X 环境,WORKSPACE 不用配置。

查看源文件结构

iOS应用源文件在$WORKSPACE/ios-app/UrlGet目录。

代码在这里:

创建BUILD文件

在命令行用vi创建并编辑BUILD文件(其它编辑器也可以):

$ vi $WORKSPACE/ios-app/BUILD

添加一个objc_library规则

Bazel针对构建iOS应用提供了诸多规则命令。在这里,我们首先使用 规则从源文件和Xib文件构建 。 (这个只是最小的规则,此外还有ios_application规则可以用于构建多架构的iOS应用。)

BUILD的内容如下:

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

规则对应的目标名字是UrlGetClasses

添加objc_binary规则

创建一个 bundled应用中的二进制可执行程序。

BUILD文件添加如下内容:

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

其中deps属性引用了前面的UrlGetClasses静态库。

添加ios_application规则

规则用于创建.ipa打包应用, 同时生成Xcode过程文件。

BUILD文件添加如下内容:

ios_application(    name = "ios-app",    binary = ":ios-app-binary",    infoplist = "UrlGet/UrlGet-Info.plist",)

完整的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.pbxprojINFO: 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. 打开网页 下载设备对应的provisioning profile配置文件。 如果又疑问,请参考 。

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

  3. 可选操作 - 可以在.gitignore中忽略配置文件。

  4. 编辑 $WORKSPACE/tools/objc/BUILD 文件,添加:

    filegroup(    name = "default_provisioning_profile",    srcs = ["
    .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://my.oschina.net/chai2010/blog/677839

你可能感兴趣的文章
Java Spring MVC 错误 及 常见问题 总结
查看>>
Linux系统实战项目——sudo日志审计
查看>>
Android Application Task Activities的关系
查看>>
浅谈CSS盒子模型
查看>>
实现iFrame自适应高度,原来很简单!
查看>>
get app id
查看>>
poj 3624 0/1背包暨0/1背包的学习
查看>>
[俗一下]世界500强公司的面试问题与答案提示 [转]
查看>>
使用 Excel Services ,结合 Analysis Services 在 SharePoint 中发布报表
查看>>
SQL Server数据导入导出技术概述与比较
查看>>
format的用法
查看>>
DHCPv6 server port and DHCPv6 client port
查看>>
10个最佳的触控手式的JavaScript框架(转)
查看>>
BitmapFactory.Options避免 内存溢出 OutOfMemoryError的优化方法
查看>>
Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片
查看>>
DNGuard 免费的DotNet加密保护工具 V1.0
查看>>
编程中的命名设计
查看>>
easyui form validate总是返回false原因
查看>>
在(CListView)列表视图中添加右键菜单的方法
查看>>
自定义服务器控件(处理不同的浏览器)
查看>>