前言
fastlane是一个自动化构建工具,主要包含测试、打包、发布等功能,它内部是由ruby实现的,是一款自动化非常高的脚本工具。
一、安装
1、xcode Command line tools安装
命令行输入 xcode-select install
2、fastlane安装
命令行输入sudo gem install fastlane
安装后 fastlane --version查看版本
二、初始化
cd到项目根目录下, 命令行输入fastlane init,之后会出现4个选项
1. Automate screenshots(自动截屏)
2. Automate beta distribution to TestFlight (自动testfilght型配置)
3. Automate App Store distribution(自动发布型配置)
4. Manual setup - manually setup your project to automate your tasks(需要手动配置内容)
直接输入4,再Enter、Enter、Enter,之后项目下就会出现一个fastlane文件夹,Gemfile、Gemfile.lock
fastlane文件夹下有两个文件:
Appfile:一般放一些配置
Fastfile:配置打包任务,类似OC中方法,一个方法就是一个任务,可以直接用终端 fastlane ... 调用
初始化完成后Fastfile会有如下代码
platform :ios do
desc "Description of what the lane does"
lane :custom_lane do
# add actions here: https://docs.fastlane.tools/actions
end
end
三、match证书管理
match证书管理实际是把项目的描述文件和证书用git管理,不用再自己去苹果开发者中心去手动创建,创建完成密码加密后推到git上,团队其余成员要用的时候直接用fastlane match命令把证书拉下来就行,当然,密码是少不了的
第一台设备配置证书时:
cd到项目根目录
命令行输入fastlane match init
fastlane match development | appstore | adhoc
输入密码、输入git地址
初始化完成 Mac设备上会有相应的描述文件和证书,当然苹果开发者中心也会出现相应的证书文件了
团队其余成员用到时直接fastlane match development | appstore | adhoc就会把文件拉到本地
四、打包及发布
打包:gym命令, 在Fastlane文件中建任务
主要代码如下:
gym(
clean:true, # 打包前clean项目
export_method: "development", # 导出方式
scheme:ENV['PROJECT_TARGET'], # scheme
# configuration: "Release", # 环境
output_directory: dir, # ipa的存放目录
output_name: filename # 输出ipa的文件名
)
gym官方文档上还有很多参数,可以到http://docs.fastlane.tools/actions/gym/#gym查阅,也可以在终端输入fastlane action gym查看参数;
打包不只有gym函数,官网上还有其余的打包函数。
发布:
1、testflight:upload_to_testflight,函数后面也是可以加参数的,具体参数意义查官网https://docs.fastlane.tools/actions/upload_to_testflight/#upload_to_testflight;
参数skip_waiting_for_build_processing:true,推到ITC的构建版本后会自动发布testflight内部测试
需要直接发到testflight外部审核也是可以的,具体的审核信息填写参数就行
2、App Store上架审核
使用deliver,先初始化,类似match,会创建两个文件夹./fastlane/metadata和./fastlane/screenshots,如果不使用fastlane,则使用它./metadata
使用函数upload_to_app_store上传,具体参数查阅官方文档https://docs.fastlane.tools/actions/upload_to_app_store/;
五、配置环境变量
在打包及推到ITC这个流程,中间会需要使用到几次密码及一些id和git地址之类的,虽然可以不做配置直接在终端上挺住的时候输入,但总感觉违背了自动化打包的原则,下面是一些用到的配置
Appfile: apple_id 、app_identifier、team_id、itc_team_id
Matchfile: git_url、storage_mode、type、username、app_identifier
可以创建.env文件存放自定义配置,在fastlane文件中直接用ENV['key']取值,还有一些.env的属性
FASTLANE_USER:您的应用程序商店连接/苹果开发者门户网站的用户,如果您FASTLANE设置访问应用程序商店连接或苹果开发者门户网站(如提交TestFlight构建,创建一个配置文件,...)
FASTLANE_PASSWORD:您的App Store Connect / Apple Developer Portal密码,通常只有在您还设置了FASTLANE_USER变量的情况下才需要
MATCH_PASSWORD:如果您使用匹配,则需要提供匹配加密的密码
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD:如果启用了2次验证或交付将二进制文件上传到App Store Connect,则需要提供应用程序专用密码
FASTLANE_SESSION:如果您启用了2次验证并且想要使用与App Store Connect进行通信的任何操作,则需要提供一个预生成的会话fastlane spaceauth。
LANG和LC_ALL:这些设置了您的shell的语言环境,您执行的所有命令都在其中运行。fastlane需要将它们设置为UTF-8语言环境才能正常工作,例如en_US.UTF-8。许多CI系统附带的语言环境默认未设置或设置为ASCII,因此请确保仔细检查您的设置是否正确。
当.env中定义了这些值的时候,在终端运行的时候就会取到这里面的值。