Fastlane 使用大致流程如下:
思路弄清楚后操作时,参照demo中的文件修改即可。参数可以自定义配置(参数说明可查看官方文档)
一.安装fastlane
1.安装最新的Xcode命令行工具:
xcode-select --install
2.使用安装fastlane,下面两种方法使用其中一个即可
sudo gem install fastlane -NV
或者:
brew cask install fastlane
Fastlane官方文档https://docs.fastlane.tools/getting-started/ios/setup
现在对Appfile,Fastfile,Gemfile,Deliverfile文件说明如下(后面会用到)
Appfile: 存储有关开发者账号相关信息
Fastfile: 核心文件,用于命令行调用和处理具体的流程,lane相对于一个action方法或函数
Gemfile 类似于cocopods 的Podfile文件
.env 配置环境变量(在fastlane init进行初始化后并不会自动生成,如果需要可以自己创建
Deliverfile: deliver工具的配置文件,上传截图苹果和后台一些app信息 (默认不生成,需要sudo gem install deliver安装)然后在fastlane 目录下执行deliver init 即可)
要注意的点:
build_app命令等同于gym(别名)
deliver 命令相当于upload_to_app_store(别名)
二. 使用(操作流程)
2.1 在项目目录下执行 fastlane init
新版本安装的时候出现了下面的分支选择,按要求选择就行
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 (需要手动配置内容)
这里我们选择4,然后一直按回车。会生成Gemfile文件,fastlane文件夹,Appfile,Fastfile文件
Appfile: 存储有关开发者账号相关信息
Fastfile: 核心文件,用于命令行调用和处理具体的流程,lane相对于一个action方法或函数
Gemfile 类似于cocopods 的Podfile文件
.env 配置环境变量(在fastlane init进行初始化后并不会自动生成,如果需要可以自己创建
Deliverfile: deliver工具的配置文件,上传截图等 (默认不生成,需要sudo gem install deliver安装)然后在fastlane 下执行deliver init 即可)#此处不使用,自己去苹果后台配置
注意:自动生成的Gemfile里的路径需要把'.' 改为'fastlane'
plugins_path = File.join(File.dirname(__FILE__), '.', 'Pluginfile')eval_gemfile(plugins_path) if File.exist?(plugins_path)
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') eval_gemfile(plugins_path) if File.exist?(plugins_path)
2.2.1 修改Fastfile文件(以下为部分示例,后面有完整demo。这种使用时在项目目录下执行fast lane即可)
desc "Push a new release build to the 蒲公英"
lane :pgyAction do
increment_build_number(xcodeproj: "XXXX")//这里是build版本号自增,防止小于等于之前build号,这里需要打开Xcode-- build Setting --Versioning System --为Apple Generic (此处有坑,后面解释)
build_app(workspace: "项目名", scheme: "XXXX")
# 插件 --- 蒲公英
# fastlane add_plugin pgyer 发布到蒲公英需要执行这个命令安装pgyer工具
# fastlane add_plugin firim 发布到firim需要执行这个命令安装firim工具
# fastlane add_plugin fastlane-plugin-version 安装版本管理
pgyer(api_key:"XXXX",
user_key:"XXXX")
#这里的"XXX"可以使用.env里的环境变量替 换为 ENV['User_Key'] 注:User_Key环境变量
end
使用时在项目目录下执行fastlane 即可,选择对应操作
还有一种写法外部传入版本号和build参数 (这种使用时需fastlane adhoc_pgy version:1.5 build:1
fastlane lane名称 version: build:)
# 函数(一个方法)
desc "版本处理"
def setup_version_build(options)
increment_build_number(
build_number:options[:build])
increment_version_number(
version_number:options[:version])
end
---------------------------------------------------
desc "上线蒲公英"
lane :adhoc_pgy do |options|
setup_version_build(options)#调用上面函数
#increment_build_number(xcodeproj: ENV['Xcodeproj'])#不需要执行这行
build_app(
workspace: ENV['Workspace'],#指定workspace (使用cocopods)
scheme: ENV['Scheme'],#指定打的哪个scheme
silent: true,
clean: true,#打包前clean
output_directory: ENV['Pgy_Output_Path'],#输出目录
output_name: logDirectory,#输出名字
export_xcargs: "-allowProvisioningUpdates",#允许自动更新配置
export_method:"ad-hoc")#出包方法 app-store, ad-hoc, package, enterprise, development
pgyer(api_key: ENV['Api_Key'],
user_key: ENV['User_Key'])#ENV['XX']使用环境变量,看2.2.3
end
2.2.2修改Appfile文件(部分)
# Appfile使用.env方式直接读取变量即可 (看2.2.3)
app_identifier ENV['App_Identifier']
apple_id ENV['Apple_Id']
team_id ENV['Team_Id']
2.2.3 添加环境变量.env
在fastlane文件夹下创建添加.env 环境变量(touch .env )
例如:# 蒲公英 的api_key
Api_Key = "de1a6608cce966dee05a5df3c654113b"
# 蒲公英 的user_key
User_Key = "cd4b534a73e5bce41a9fa92b1fdc7b31"
2.2.4 添加发布到蒲公英和fir工具,如不需要可跳过
在项目中fastlane目录下执行
fastlane add_plugin pgyer 发布到蒲公英需要执行这个命令安装pgyer工具
fastlane add_plugin firim 发布到firim需要执行这个命令安装firim工具
安装后生成Pluginfile
2.3以上要修改的地方修改好了(发布是否需要指定版本号和build)
1.不需要指定版本号,使用build自增(不指定版本号,使用时执行fastlane命令)
increment_build_number(xcodeproj: ENV['Xcodeproj'])#修改Fastfile 需要执行这行
---------------------------------------------------------
2.指定版本号和build(使用时执行fastlane + lane名 version:X build:X)例如fastlane adhoc_pgy version:1.5 build:1
setup_version_build(options)#调用函数 #修改Fastfile 需要执行这行
如出现Apple Generic Versioning is Not enabled ,需要打开Xcode-- build Setting --Versioning System --为Apple Generic 。如果已经打开,还是报错。Xcode10的问题,需要在Xcode菜单栏选择File-- Workspace Setting就会出现如下的界面,选择Legacy Build即可
出现SuccessFully Exported 则导出ipa和dSYM成功
发布蒲公英成功如下图:
是否需要自动发布APP后台截图 和更新信息 备注等:配置有两种方法
发布到appstore时 发现后台的描述不见了或者被覆盖了,需要在lane 里添加禁止使用元数据和截图.不传截图和元数据 skip_screenshots,skip_metadata设为true。要传的话设为false 如下图。(PS:可以配置多个参数,需要可查看下面Deliver文件说明传送门)
1.修改Fastfile文件pload_to_app_store 方法添加参数
pload_to_app_store(skip_screenshots: true,skip_metadata: true )
2.在fantlane文件夹下,修改Deliverfile 文件,如下图(没有的话在fantlane文件夹下执行deliver init)
skip_screenshots(true)
skip_metadata(true)
如果需要手动上传元数据等,可以先更新下来,然后修改需要的txt文件。如下图:截图则放在screenshots下即可.发布时会弹出一个html文件预览配置的信息(如下图),终端会弹出Does the Preview on path './fastlane/Preview.html' look okay for you? 查看没问题后y ,如果错了n ,然后修改。
从App Store Connect下载现有屏幕截图
fastlane deliver download_screenshots
从App Store Connect下载现有元数据
fastlane deliver download_metadata
部分deliver参数
关于Fastlane 和deliver 的详细参数可以查看官方文档
Fastlane官方文档https://docs.fastlane.tools/getting-started/ios/setup
Deliver文件说明传送门https://docs.fastlane.tools/actions/deliver/#more-options
Demo传送门:https://github.com/TeeMoYan/FastlaneDemo.git
shell自动化打包:https://www.jianshu.com/p/e8297a8f9c1f