image
Fastlane 是一套使用 Ruby 写的自动化工具集, 旨在简化 Android 和 iOS 的部署过程, 自动化你的工作流它可以简化一些乏味单调重复的工作, 像截图代码签名以及发布 App
Github
官网
文档
我认为我们在选择一些三方开源库或是工具的前提是: 可以满足我们当下的需求并且提供好的扩展性, 无疑对我而言 Fastlane 做到了我当前项目的需求主要是下面几方面:
一行命令实现打包工作, 不需要时时等待操作下一步, 节省打包的时间去做其他的事
避免频繁修改配置导致可能出现的 Release/Debug 环境错误, 如果没有检查机制, 那将是灾难, 即使有检查机制, 我们也不得不重新打包, 浪费了一次打包时间毕竟人始终没有程序可靠, 可以告别便利贴了
通过配置自动上传到蒲公英, fir.im 内测平台进行测试分发, 也可以直接上传到 TestFlight,iTunes Connect
证书的同步更新, 管理, 在新电脑能够迅速具备项目打包环境
如果你也有上述需求, 那我相信 Fastlane 是一个好的选择
那既然说 Fastlane 是一套工具的集合, 那认识并了解其中的工具的作用是必不可少的环节按照功能属性 Fastlane 对工具进行了如下分类 (链接至官网详细介绍):
Testing 测试相关
Building 打包
Screenshots 截图
Project 项目配置
Code Signing 代码签名
Documentation 文档
Beta 内测相关
Push 推送
Releasing your app 发布
Source Control Git 工作流
Notifications 通知相关
Misc 其他的杂七杂八
分类下对应的就是具体的每一个工具的介绍, 在这里每一个工具 Fastlane 叫做 action, 下文我们也统一叫 action 这里我会列举一些我认为常用的 action, 其他的大家可以去官网看下
gym: 是 fastlane 提供的打包工具
snapshot: 生成多个设备的截图文件
frameit : 对截图加一层物理边框
increment_build_number: 自增 build number 然后与之对应的 get_build_numberVersion number 同理
cert: 创建一个新的代码签名证书
sigh: 生成一个 provisioning profile 并保存打当前文件
pem: 确保当前的推送证书是活跃的, 如果没有会帮你生成一个新的
match: 在团队中同步证书和描述文件 (这是一种管理证书的全新方式, 需要重点关注下)
testflight: 上传 ipa 到 testflight
deliver: 上传 ipa 到 AppStore
当然官网里面其实是有很多可以划等号的 Action, 大家在看的时候注意下 Actions 官网关于 Action 的介绍
多说无益, 开始上手
当前最新版本是 2.8.4
一安装 xcode 命令行工具
xcode-select --install
, 如果没有安装, 会弹出对话框, 点击安装如果提示
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
表示已经安装
二安装 Fastlane
sudo gem install fastlane -NV
或是
brew cask install fastlane
我这里使用 gem 安装的
安装完了执行 fastlane --version, 确认下是否安装完成和当前使用的版本号
三初始化 Fastlane
cd 到你的项目目录执行
fastlane init
init
这里会弹出四个选项, 问你想要用 Fastlane 做什么? 之前的老版本是不用选择的选几都行, 后续我们自行根据需求完善就可以, 这里我选的是 3
如果你的工程是用 cocoapods 的那么可能会提示让你勾选工程的 Scheme, 步骤就是打开你的 xcode, 点击 Manage Schemes, 在一堆三方库中找到你的项目 Scheme, 在后面的多选框中进行勾选, 然后 rm -rf fastlane 文件夹, 重新 fastlane init 一下就不会报错了
not found scheme
接着会提示你输入开发者账号和密码
- [20:48:55]: Please enter your Apple ID developer credentials
- [20:48:55]: Apple ID Username:
登录成功后会提示你是否需要下载你的 App 的 metadata 点 y 等待就可以
如果报其他错的话, 一般会带有 github 的相似的 Issues 的链接, 里面一般都会有解决方案
四文件系统
初始化成功后会在当前工程目录生成一个 fastlane 文件夹, 文件目录为下
fastlane
其中 metadata 和 screenshots 分别对应 App 元数据和商店应用截图
Appfile 主要存放 App 的 apple_id team_id app_identifier 等信息
Deliverfile 中为发布的配置信息, 一般情况用不到
Fastfile 是我们最应该关注的文件, 也是我们的工作文件
Fastfile
Fastfile
之前我们了解了 action, 那 action 的组合就是一个 lane, 打包到蒲公英是一个 lane, 打包到应用商店是一个 lane, 打包到 testflight 也是一个 lane 可能理解为任务会好一些
打包到蒲公英
这里以打包上传到蒲公英为例子, 实现我们的一行命令自动打包
蒲公英在 Fastlane 是作为一个插件存在的, 所以要打包到蒲公英必须先安装蒲公英的插件
打开终端输入
fastlane add_plugin pgyer
更多信息查看蒲公英文档
新建一个 lane
- desc "打包到 pgy"
- lane :test do |options|
- gym(
- clean:true, #打包前 clean 项目
- export_method: "ad-hoc", #导出方式
- scheme:"shangshaban", #scheme
- configuration: "Debug",# 环境
- output_directory:"./app",#ipa 的存放目录
- output_name:get_build_number()# 输出 ipa 的文件名为当前的 build 号
- )
- # 蒲公英的配置 替换为自己的 api_key 和 user_key
- pgyer(api_key: "xxxxxxx", user_key: "xxxxxx",update_description: options[:desc])
- end
这样一个打包到蒲公英的 lane 就完成了
option 用于接收我们的外部参数, 这里可以传入当前 build 的描述信息到蒲公英平台
执行
在工作目录的终端执行
fastlane test desc: 测试打包
success
然后等待就好了, 打包成功后如果蒲公英绑定了微信或是邮箱手机号, 会给你发通知的, 当然如果是单纯的打包或是打包到其他平台, 你也可以使用 fastlane 的 notification 的 action 集进行自定义配置
其他的一些配置大家可以自己组合摸索一下, 这样会让你对它更为了解
match
开头已经说了, match 是一种全新的证书同步管理机制, 也是我认为在 fastlane 中相对重要的一环, 介于篇幅这篇就不细说了, 有兴趣的可以去官网看下, 有机会我也会更新一篇关于 match 的文章 match
其他的一些小提示
可以在 before_all 中做一些前置操作, 比如进行 build 号的更新, 我个人建议不要对 Version 进行自动修改, 可以作为参数传递进来
如果 ipa 包存放的文件夹为工作区, 记得在. gitignore 中进行忽略处理, 我建议把 fastlane 文件也进行忽略, 否则回退版本打包时缺失文件还需要手动打包
如果你的 Apple ID 在登录时进行了验证码验证, 那么需要设置一个专业密码供 fastlane 上传使用, 否则是上传不上去的
关于 fastlane 的一些想法
其实对于很多小团队来说, fastlane 就可以简化很多操作, 提升一些效率, 但是还不够极致, 因为我们没有打通 Git 环节, 测试环节, 反馈环节等, fastlane 只是处于开发中的一环许多团队在进行 Jenkins 或是其他的 CI 的尝试来摸索适合自己的工作流但是也不要盲目跟风, 从需求出发切合实际就好, 找到痛点才能找到止痛药!
来源: http://www.jianshu.com/p/5d836e89d9d1