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

结果


Fastlane介绍及快速集成_第1张图片
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详细列解

你可能感兴趣的:(Fastlane介绍及快速集成)