平时开发新功能的时候,需要经常提交测试包到fir
,然后给测试人员安装,每次发布都得更改配置、clean 缓存,是一件很繁琐的事情,稍微一点不注意可能就选错了描述文件、版本号等等
以前看过有人用自动化发布工具,一直没有尝试应用,刚好这两天发布了新版,时间充裕了些,就开始部署一下自动化工具。
fastlane命令是一个流程控制的命令行工具(CLI),通过内部集成action和第三方的action完成一系列控制流程。运行fastlane命令行工具,会读取当前目录或者./fastlane目录下的Fastfile配置文件。
安装
确保Xcode Command Line Tools 安装了最新版
xcode-select --install
如果你单独安装过ruby(如果你能看得懂这句),去掉sudo。如果使用系统自带的ruby,需要sudo权限
[sudo] gem install fastlane
初始化
进入到项目的根目录下
fastlane init
问了你的Apple ID,Team的问题之后,fastlane会自动检测当前目录下项目的App Name和App Identifier。如果检测的不对,选择n自行输入。
也可以不输入你的 Apple ID
接下来会问你这个app是否需要在iTC和ADC中创建(上一步中如果选择y会自动检测是否需要创建),fastlane会调用produce进行初始化,如果现在还不想创建,也可以之后再运行produce init进行这个流程。如果不执行produce的流程,deliver的流程也会被掠过,当然之后也可以deliver init运行完全一样的流程。
在执行deliver init的过程中,会同步iTC中的所有语言的元数据和截图,并按照目录结构组织好。
这里肯定会被创建的是Appfile和Fastfile。
Fastfile => 用来定义所有的lane任务Fastfile帮助
Appfile => 是用来存储一些公共信息的,比如app_identifier,apple_id,team_id,itc_team_id等。Appfile帮助
Deliverfile => deliver的配置文件Deliverfile帮助
插件
Fastlane的插件是一个或者一组action的打包,单独发布在fastlane之外。
在这里可以查看所有的插件
fastlane search_plugins
我在这里只用了两个插件fastlane-plugin-versioning
fastlane-plugin-firim
- fastlane-plugin-versioning
用来修改build版本号和version版本号
Fastlane
内嵌的actionincrement_build_number
使用的是苹果提供的agvtool
,agvtool
在更改Build的时候会改变所有target
的版本号。这时如果你在一个工程里有多个产品的话,每次编译,所有的Build都要加1,最后就不知道高到哪里去了。
有了fastlane-plugin-versioning
不仅可以指定target增加Build,而且可以按照「语义化版本」规范增加Version,当然也可以直接设定Version
。
- **fastlane-plugin-firim **
直接把AdHoc
或者InHouse
打包的ipa上传到fir.im
,供测试下载。
安装上面的插件
fastlane add_plugin versioning
fastlane add_plugin firim
![](https://img.haomeiwen.com/i2417618/40e11e90c34769de.png)
配置
有了Fastfile
,就可以添加自己的发布流程了。打开Fastfile
文件(这里我用Sublime 设定语法为Ruby).
![](https://img.haomeiwen.com/i2417618/735f5918c0a48194.png)
Gym
gym 是执行的配置
常用配置项
Name | Type | Description | Default |
---|---|---|---|
scheme | string | 指定需要编译的scheme | |
clean | bool | 是否在编译前clean | false |
output_directory | string | 导出目录 | ./ |
output_name | string | 导出ipa名字 | [app_name].ipa |
export_options | hash/string | 这里指定Xcode API的外部配置文件地址,或者配置hash,见下文 | |
export_method | string | 打包方式,可选项app-store ad-hoc package enterprise development developer-id | 如果在fastlane中使用了sigh,这个值会从上下文获取 |
include_bitcode | bool | 是否开启bitcode | Xcode API 默认值为true |
include_symbols | bool | 是否生成符号表 | Xcode API 默认值为true |
Xcode7之后,Xcode API允许我们指定一个plist文件作为额外的配置文件。gym默认会帮你创建这个文件,你可以直接指定配置。更多关于plist可配置项,执行xcodebuild -help
查看Available keys for -exportOptionsPlist
。
export_method
, include_symbols
,和include_bitcode
这些参数都是exportOptionsPlist
的配置,对应method
,uploadSymbols
和uploadBitcode
。
在手动输入 build 的时候,需要工程文件中有这个 key,
Current Project Version
,否则在执行命令的时候会报错,无法使用 build
![](https://img.haomeiwen.com/i2417618/266d4b0ae7f70e6e.png)
使用
fastlane uploadTo_firim version:3.0.0 build:45
version 是这次打包的版本号
build 是这次的 build 号
回车就开始自动打包了
网友评论