Fastlane使用说明 自动化打包

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)

执行init


执行init后生成

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  需要执行这行 


不指定版本选3发布蒲公英


如出现Apple Generic Versioning is Not enabled ,需要打开Xcode-- build Setting --Versioning System --为Apple Generic 。如果已经打开,还是报错。Xcode10的问题,需要在Xcode菜单栏选择File-- Workspace Setting就会出现如下的界面,选择Legacy Build即可


出现SuccessFully Exported 则导出ipa和dSYM成功

导出ipa

发布蒲公英成功如下图:

导出包成功发布成功


是否需要自动发布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


修改需要的txt文件


html文件预览


是否使用预览效果

部分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

推荐阅读更多精彩内容