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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容