iOS效率神器fastlane自动打包

2018 年 9 月 11 日 CocoaChina

本公众号内容均为本号转发,已尽可能注明出处。因未能核实来源或转发内容图片有权利瑕疵的,请及时联系本号,本号会第一时间进行修改或删除。 QQ : 3442093904 


Fastlane是一套使用Ruby写的自动化工具集,旨在简化Android和iOS的部署过程,自动化你的工作流。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App。


Github

官网

文档


我认为我们在选择一些三方开源库或是工具的前提是:可以满足我们当下的需求并且提供好的扩展性, 无疑对我而言Fastlane做到了。我当前项目的需求主要是下面几方面:


  • 一行命令实现打包工作,不需要时时等待操作下一步,节省打包的时间去做其他的事。

  • 避免频繁修改配置导致可能出现的Release/Debug环境错误,如果没有检查机制,那将是灾难,即使有检查机制,我们也不得不重新打包,浪费了一次打包时间。毕竟人始终没有程序可靠,可以告别便利贴了。

  • 通过配置自动上传到蒲公英,fir.im内测平台进行测试分发,也可以直接上传到TestFlight,iTunes Connect。

  • 证书的同步更新,管理,在新电脑能够迅速具备项目打包环境。


如果你也有上述需求,那我相信Fastlane是一个好的选择。


那既然说Fastlane是一套工具的集合,那认识并了解其中的工具的作用是必不可少的环节。按照功能属性Fastlane对工具进行了如下分类(链接至官网详细介绍):



分类下对应的就是具体的每一个工具的介绍,在这里每一个工具Fastlane叫做action,下文我们也统一叫action。这里我会列举一些我认为常用的action,其他的大家可以去官网看下


  • gym:是fastlane提供的打包工具。

  • snapshot: 生成多个设备的截图文件

  • frameit :对截图加一层物理边框

  • increment_build_number:自增build number 然后与之对应的get_build_number。Version 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



这里会弹出四个选项,问你想要用Fastlane做什么? 之前的老版本是不用选择的。选几都行,后续我们自行根据需求完善就可以,这里我选的是3。


如果你的工程是用cocoapods的那么可能会提示让你勾选工程的Scheme,步骤就是打开你的xcode,点击Manage Schemes,在一堆三方库中找到你的项目Scheme,在后面的多选框中进行勾选,然后rm -rf fastlane文件夹,重新fastlane init一下就不会报错了。



接着会提示你输入开发者账号和密码。

[20:48:55]: Please enter your Apple ID developer credentials

[20:48:55]: Apple ID Username:


登录成功后会提示你是否需要下载你的App的metadata。点y等待就可以。

如果报其他错的话,一般会带有github的相似的Issues的链接,里面一般都会有解决方案。


四、文件系统


初始化成功后会在当前工程目录生成一个fastlane文件夹,文件目录为下。



其中metadata和screenshots分别对应App元数据和商店应用截图。


Appfile主要存放App的apple_id team_id app_identifier等信息

Deliverfile中为发布的配置信息,一般情况用不到。


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:测试打包



然后等待就好了,打包成功后如果蒲公英绑定了微信或是邮箱手机号,会给你发通知的,当然如果是单纯的打包或是打包到其他平台, 你也可以使用fastlane的notification的action集进行自定义配置。


其他的一些配置大家可以自己组合摸索一下,这样会让你对它更为了解。


match


开头已经说了,match是一种全新的证书同步管理机制,也是我认为在fastlane中相对重要的一环,介于篇幅这篇就不细说了,有兴趣的可以去官网看下,有机会我也会更新一篇关于match的文章。match


其他的一些小提示


  1. 可以在before_all中做一些前置操作,比如进行build号的更新,我个人建议不要对Version进行自动修改,可以作为参数传递进来。

  2. 如果ipa包存放的文件夹为工作区,记得在.gitignore中进行忽略处理,我建议把fastlane文件也进行忽略,否则回退版本打包时缺失文件还需要手动打包。

  3. 如果你的Apple ID在登录时进行了验证码验证,那么需要设置一个专业密码供fastlane上传使用,否则是上传不上去的。

  4. 如果你们的应用截图和Metadata信息是运营人员负责编辑和维护的,那么在打包到AppStore时,记得要忽略截图和元数据,否则有可能因为不一致而导致覆盖。skip_metadata:true, #不上传元数据 skip_screenshots:true,#不上传屏幕截图


关于fastlane的一些想法


其实对于很多小团队来说,fastlane就可以简化很多操作,提升一些效率,但是还不够极致,因为我们没有打通Git环节,测试环节,反馈环节等,fastlane只是处于开发中的一环。许多团队在进行Jenkins或是其他的CI的尝试来摸索适合自己的工作流。但是也不要盲目跟风,从需求出发切合实际就好,找到痛点才能找到止痛药!


作者:mirrorzyb

链接:https://www.jianshu.com/p/5d836e89d9d1


登录查看更多
1

相关内容

iOS 是苹果公司为其移动产品开发的操作系统。它主要给 iPhone、iPod touch、iPad 以及 Apple TV 使用。原本这个系统名为 iPhone OS,直到2010年6月7日 WWDC 大会上宣布改名为 iOS。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【元图(Meta-Graph):元学习小样本连接预测】
专知会员服务
64+阅读 · 2020年5月31日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
CALDERA 一款对手自动模拟工具
黑白之道
20+阅读 · 2019年9月17日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
告别 PS !3 行代码 5 秒搞定抠图的 AI 神器!
程序人生
6+阅读 · 2019年7月11日
VS Code Remote发布!真·远程开发
开源中国
6+阅读 · 2019年5月3日
已删除
创业邦杂志
5+阅读 · 2019年3月27日
占坑!利用 JenKins 持续集成 iOS 项目时遇到的问题
3D-LaneNet: end-to-end 3D multiple lane detection
Arxiv
7+阅读 · 2018年11月26日
Arxiv
7+阅读 · 2018年3月19日
Arxiv
8+阅读 · 2018年1月12日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【元图(Meta-Graph):元学习小样本连接预测】
专知会员服务
64+阅读 · 2020年5月31日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
相关资讯
CALDERA 一款对手自动模拟工具
黑白之道
20+阅读 · 2019年9月17日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
告别 PS !3 行代码 5 秒搞定抠图的 AI 神器!
程序人生
6+阅读 · 2019年7月11日
VS Code Remote发布!真·远程开发
开源中国
6+阅读 · 2019年5月3日
已删除
创业邦杂志
5+阅读 · 2019年3月27日
占坑!利用 JenKins 持续集成 iOS 项目时遇到的问题
Top
微信扫码咨询专知VIP会员