Fastlane是一套使用Ruby写的自动化工具集,旨在简化Android和iOS的部署过程,自动化你的工作流。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App。它可以使用集成好的action,也可以自定义action(比如封装一些git语句或者shell)
如何安装?
# 删除默认的gem源
gem sources --remove https://rubygems.org
# 增加ruby-china作为gem源
gem source -a https://gems.ruby-china.com
# 清空源缓存
gem sources -c
# 更新源缓存
gem sources -u
# 安装fastlane
sudo gem install fastlane --verbose
如何使用?
cd到你的项目目录执行fastlane init
选择4手动配置
然后一直卡在bundle update,解决办法为:
Fastfile可以使用shell,比如:
lane :custom_lane do
sh("rm /Users/hy/Desktop/test.h") //shell命令删除test.h
end
文件系统:
初始化成功后会在当前工程目录生成一个fastlane文件夹,文件目录为下。
Appfile,用于存放app ID和开发者的Apple ID
Fastfile,用于管理创建的lane,lane则可以调用各个action(即fastlane的工具链)
Snapfile,用于指定需要进行屏幕截图的设备类型(根据选项生成,可自己创建文件用于配置)
Deliverfile,用于配置发布至appStore的文件(根据选项生成,可自己创建文件用于配置)
lane的使用:
lane是fastfile中的方法定义标签,可以理解为swift中定义一个函数,前面的 func。fastlane 都是基于ruby,所以fastfile中也是使用ruby语法的。
定义一个简单的无参lane:
lane : package
puts"这是一个lane"
end
定义一个带参的lane,在fastfile中option类似于一个字典集。我们可以通过 option[:configuration] 取其中value
lane : package do |option|
configuration = option[:configuration]
puts configuration
end
//lane的调用
package(configuration:'Release', export_method:'ad-hoc')
常用命令:
fastlane actions: 展示所有有效action列表
fastlane action [action_name]: 展示一个action的详细说明,使用方法等
fastlane lanes: 展示fastfile中的所有lane
fastlane list: 展示fastfile中的所有的有效的lane
fastlane new_action: 创建一个新的action
fastlane env: 打印fastlane、ruby环境,一般提bug到issue的时候会要求提供
生命周期:
执行顺序方法名说明
1.before_all在执行 lane 之前只执行一次
2.before_each每次执行 lane 之前都会执行一次
3.lane自定义的任务
4.after_each每次执行 lane 之后都会执行一次
5.after_all在执行 lane 成功结束之后执行一次
6.error在执行上述情况任意环境报错都会中止并执行一次
Action:
除开我们自定义fastfile中的方法,fastlane还提供了很多已经写好的独立的方法库,也就是Actions。
常用Action
Action列表文档: Actions
我们常用的主要包括下面几部分,其他action的使用可以参考官方文档:
scan=> 自动运行测试工具,并且可以生成漂亮的HTML报告
match=> 一个新的证书和配置文件管理工具。把所有需要用到的证书传到git私有库上,任何需要配置的机器直接用match同步回来就不用管证书问题了
gym=> Fastlane家族的自动化编译工具,和其他工具配合的非常默契
deliver=> 自动上传截图,APP的元数据,二进制(ipa)文件到iTunes Connect
pilot=> 管理TestFlight的测试用户,上传二进制文件
spaceship=> 为pilot,boarding和deliver等工具提供和 iTC 和 ADC 的交互API。spaceship本来是个独立的项目,后来被Fastlane收编进来非官方的iTunes Connect JSON API的文档
打测试包:
gym:
常用参数:scheme :指定打的哪个scheme
project :指定project (未使用cocopods)
workspace :指定workspace (使用cocopods)
clean :打包前clean
xcargs : 附加一些参数传递给xcodebuild 如: xcargs:'DEBUG_INFORMATION_FORMAT="dwarf-with-dsym"',
export_method :出包方法 app-store, ad-hoc,package, enterprise, development
configuration : 指定构建App的配置 Release、Debug、自定义output_directory : 输出目录
output_name :输出名称
include_symbols :是否包含调试符号
include_bitcode :是否开启bitcode
纯swift工程打包,在非appstore证书下签出来的包都缺少一个swiftsupport文件夹,里面放的是swift的支持库。
在Fastfile中新建一个lan
lane :beta do
# 调用 gym 打测试包
gym(
configuration:"Debug",
export_method:"development"
)
end