Fastlane介绍及快速集成

什么是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

结果


image.png

以上就是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的使用,如有错误地方,请各位及时指正

参考文档:
Fastlane官方网页
Actions详细列解
Plugins详细列解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • fastlane运行所需要的环境: OS X 10.9以上 Ruby 2.0 以上 Xcode 拥有一个开发者账号...
    阿姣_0405阅读 2,956评论 0 4
  • 作为架构师的我们常常要面临的一个难题就是技术选型。现在无论是商业项目也好,开源项目也好,可供选择的方案实在是太多,...
    老邢Thierry阅读 4,860评论 17 52
  • 持续集成指的是,频繁地(一天多次)将代码集成到主干。它的好处主要有两个。 (1)快速发现错误。每完成一点更新,就集...
    码农甲阅读 7,914评论 2 2
  • 看新闻说南加州大火了 现在看世界末日的预言可能是真的 超市好像又进了一批滞销的进口食品 当然生产日期是安全的 人生...
    Wendyn阅读 140评论 0 0
  • 每个女人都有很多共同的梦想,想开创自己的事业,坚强独立;想拥有说走就走的旅行,潇洒自在;想体验更丰富的人生,感受更...
    唯美感情学阅读 146评论 0 0