什么是Fastlane
Fastlane是一套非常实用而强大的组件,其目的主要是为了实现iOS和Android的发布流程的自动化,极大地节省在发布流程中需要花费的时间。
Fastlane实际上是一个Ruby脚本的集合,里面的每一个工具实际就是一个Ruby脚本,用于执行特定的工作任务。
Fastlane允许开发者通过定制特定的配置文件(类似ruby语法),组合不同的工具,将你的工作目标形成一个自动化流程。例如整个iOS应用的发布流程。
GitHub上Fastlane已经超过了2w个star。很多著名的软件均在使用fastlane或者开发对fastlane的支持。跟我们比较接近的就有Jenkins。
Fastlane能干什么
简单来说,以iOS应用发布流程为例,整个流程的各部分工作Fastlane都能帮你完成,当然除了写代码以外。
主要突出的几个功能:
- sigh:生成并下载开发者证书
- produce:在iTunes Connector上创建你的应用
- gym:打包你的应用
- snapshot:实现应用截屏并取得图片
- pilot:将你的应用发布到TestFlight进行测试
- deliver:将你的应用的二进制代码,截屏和原数据等信息上传到AppStore
...其实还有很多很突出也很实用的功能,几乎你能想到的正常的需求都做了,到目前为止已有共计超过210个actions。如果还不够,你还可以寻找额外的plugin,至少有超过250个额外的plugin你可以使用。
环境准备
- 安装xcode-select
xcode-select --install
- ruby 需要比较新的版本,大于2.0.0。建议使用rvm升级。
- 安装fastlane
sudo gem install fastlane
安装完毕后查看一下安装的版本以确认
fastlane -v
如何使用
使用前先了解一些简单基本的指令(又称action)
- gym:执行打包,得到ipa
- cert:创建/下载 certificate 证书
- sign:创建/重建/修复/下载 provisioning profile 证书
- pilot:发布到testFlight
- deliver:发布到iTunes Connect,甚至可以提交审核
- snapshot:应用内截屏
以上仅列举几个象征性的action,还有数百个actions支持各种各样的需要。
查看所有actions指令
fastlane actions
查看某个action的具体参数
fastlane action [action名称],如:
fastlane action gym
如何在我们的项目中使用fastlane呢?
命令行位置定位到目标Xcode项目根目录,然后执行如下
fastlane init
然后会有一些选项和输入项(AppId账号密码),按需输入即可,会进行一些相关的初始化
完成后项目根目录会生成一个fastlane文件夹,其中至少含有Appfile,Fastfile两个关键文件:
- Appfile:记录你的项目,账号等关键信息,如包名,Apple ID,Team ID等
- Fastfile:关键的操作文件。根据你自己的需求,在其中定制自己的操作流
fastlane init 方式的初始化也完全可以通过自建文件夹,自建Appfile,Fastfile等关键文件实现。只要格式标准,字段准确,也可正常使用。
Fastfile内容如下:
default_platform(:ios)
platform :ios do
#Sample 1
desc "Push a new beta build to TestFlight"
lane :beta do
build_app(scheme: "FastlaneApp")
upload_to_testflight
end
#Sample 2
desc "这是你自定义的一个lane"
lane :mylane do
#以下开始编写你需要的action
gym
pilot
end
#Sample 3
desc "这个lane我想跑一段shell"
lane :someshell do
sh("echo Hello World")
end
end
上述代码中给大家简单展示了三个示例。fastlane的主要使用就是需要根据自己的需求定制自己的lane,lane里面加入各种各样的action即可。
Fastfile编写完毕后,就可以尝试着玩一下了。fastlane + [lane名称]即可执行
使用终端定位到项目根目录,执行如下
fastlane [lane名称],如:
fastlane someshell
结果
以上就是fastlane最简单的用法了。
定制好自己每一条lane任务之后,可以自己形成脚本,按需执行。
#!/bin/sh
fastlane someshell
fastlane beta
fastlane mylane
...
...
更多进阶
插件Plugins之使用
如果众多的action满足不了你的欲望🙂,那么还有更多的功能供你使用,那就是plugin。截至目前为止超过200多个plugin支持使用。插件添加完后,使用起来就跟action是一样的用法。
列举所有的plugins
fastlane search_plugins
模糊搜索plugins
fastlane search_plugins [plugin name]
添加指定的plugins
fastlane add_plugin [plugin name]
添加plugin时,在fastlane文件中被会创建一个Pluginfile,里面记录着你的项目所添加了的plugin。添加过程中可能会需要sudo权限。
Pluginfile也可以任意改写,只需要符合格式即可。格式如下:
gem 'fastlane-plugin-[plugin name1]'
gem 'fastlane-plugin-[plugin name2]'
gem 'fastlane-plugin-[plugin name3]'
...
可以根据自己的需求,自己编写好Pluginfile后,执行如下:
fastlane install_plugins
那么项目中就会根据你的Pluginfile来安装你所需的plugin。
如需移除某个plugin,在Pluginfile文件中删除该插件即可。
插件Plugins之创建自定义
制作plugin需要使用ruby
任意选定你存放插件的地方,创建一空文件夹,执行如下,传入你的插件名称:
fastlane new_plugin [plugin name]
随后会生成一个fastlane-plugin-[plugin name]的文件夹,在其中的lib/fastlane/plugin/[plugin_name]/actions/[plugin_name].rb进行你的功能的实现。
本人并未尝试过plugin的实现,具体Ruby细节请自行查找
至此,本地环境中就已经有你的插件,回到你的项目中,执行添加插件
fastlane add_plugin [plugin name]
它会提供选项,选择2.Local Path,并传入路径(此路径要求传入上面你生的fastlane-plugin-[plugin name]文件夹路径,一般情况下此文件内是含有.gemspec的),即可完成plugin的添加。
插件Plugins之发布
如果你想创建创建供全世界使用,也是非常简易。
plugin支持RubyGems和GitHub的发布
RubyGems
感觉跟cocoaPods很相似
1.在RubyGems官网上创建账号
2.在GitHub上将你的插件发布上去(整个fastlane-plugin-[plugin name]文件夹)
3.将.gemspec
文件中的spec.homepage
参数填入你的GitHub地址
4.执行以下指令,进行发布操作
bundle install
rake install
rake release
如此发布后,别人在搜索全plugin列表也能找到你的plugin了
GitHub
在GitHub上发布了你的plugin之后,可以直接通过定制Pluginfile进行对此插件的使用:
gem "fastlane-plugin-[plugin_name]", git: "https://github.com/[user]/[plugin_name]"
全文完,本文仅浅层分析Fastlane的使用,如有错误地方,请各位及时指正