fastlane自动打包
前言
fastlane
也是自动化的一个手段,并且其不只是在 ios
中使用,其他平台
也适用,其能大幅度提高开发速度,毕竟自动化配置完毕后,测试也能自己打包更新了
测试demo
fastlane文档
fastlane的安装
首先确保安装了最新Xcode命令行工具,打开命令行执行下面命令
xcode-select --install 如果已经安装过了,会提示 xcode-select: error: command line tools are already installed, use "Software Update" to install updates 复制代码
方案一(推荐)
fastlane推荐
,这种方式将明确定义要使用的fastlane版本及其依赖项
,还将加快fastlane的执行速度
并且该方案基本上不会出现 fastlane 命令找不到的问题,可以减少后续配置
使用 bundler
来安装配置 fastlane
首先使用 gem
安装 bundler
,相信配置 cocoapods
的过程试用过 gem
sudo gem install bundler 复制代码
然后进入到 项目目录
下,创建 名为 Gemfile
的文件,没有后缀名
然后编辑 Gemfile
文件内容,如下所示
source "https://rubygems.org" gem "fastlane" 复制代码
通过 bundle update
命令,可直接更新bundle
,并可用于更新和生成Gemfile.lock
文件
bundle update 复制代码
如果 Gemfile.lock
删除,可重新执行 bundle update
,或执行 bundle install
然后使用 bundle exec fastlane
命令,生成配置文件
bundle exec fastlane //此时也可以和其他一样,时使用下面命令,生成配置文件,可以已经没必要了,还需要多打几个字母 bundle exec fastlane init 复制代码
如下所示,按需要选择即可,这里选择了 4,也可以选择 3 (即:直接从appstore
拉取需要的信息,需要输入账号密码信息,选错了也没事,后面可以配置信息)
注意:
1、如需更新fastlane
,只需运行 bundle update fastlane
命令,更新的前提是已经生成了 Gemfile.lock
2、 如果配置了CI
,在您的 CI
上,添加bundle install
作为您的第一个构建步骤
3、fastlane
项目中 里面 bundle
方式的运行命令,均为 bundle exec
开头,例如: bundle exec fastlane
4、如果是其他安装方式
改成 bundle
, 那么运行方式上 需要将 fastlane
命令 改成 bundle exec fastlane
(可以理解为 bundle exec fastlane
== fastlane
)
方案二
使用 homebrew
商店安装 fastlane
,执行下面命令
brew install fastlane 复制代码
安装完成之后,进入到 项目目录中
,并执行下面命令
fastlane init //下面是 swift 的 fastlane init swift 复制代码
方案三
使用 gem
直接安装 fastlane
, 执行下面命令
sudo gem install fastlane 复制代码
安装完成之后,进入到 项目目录中
,并执行下面命令
fastlane init //下面是 swift 的 fastlane init swift 复制代码
fastlane 环境安装好了之后,会生成下面的几个主要文件信息,(appstore登陆后生成的文件会更多),如下所示
fastlane 配置打包上传
上面安装并初始化 fastlane
之后,会生成一个 fastlane文件夹
,里面有两个文件需要注意 Appfile
和 Fastfile
,下面配置他们两个
Appfile
Appfile
主要是配置项目的 账号名字
和 bundleID
,如下所示,更改为自己的项目
app_identifier("[APP_IDENTIFIER]") # 项目App的 bundle identifier apple_id("[APPLE_ID]") # Apple账号邮箱 # itc_team_id("x17383873x") # App Store Connect 上线的 Team ID # team_id("4BGCVPB2J7") # Developer 开发者团队的 Team ID 复制代码
team_id
可以在证书或者平台查看,证书查看方式如下所示:
如果本地 xcode
已经登录 apple账号
配置好了相关证书,那么直接使用本地环境下的账号信息即可,
AppFile
文件可以进行如下设置
app_identifier ENV['App_Identifier'] apple_id ENV['Apple_Id'] itc_team_id ENV['Itc_Team_Id'] team_id ENV['Team_Id'] 复制代码
Fastfile
fastfile
是我们项目配置的关键,打包发布
的逻辑都在这里
里面默认的主要代码如下所示,如下所示(上传 蒲公英
和 firim
的还有继续往后看)
default_platform(:ios) platform :ios do # 运行前的操作,二次密码验证的设定,如果只是上传hoc到蒲公英或firim,注释掉即可 before_all do # ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] = "tcha-fzfe-jcmd-tken" end # desc 为 lane 的注释信息,后面运行时便会理解 desc "上线 App Store" # lane 为平台设置,后面的 release 为 lane 的名称, option可以通过其设置版本号,这里取消了 lane :release do | options | # 编译版本号自增设置,项目的版本号需要自己设定的和appstore一样,自己项目中设置好即可 # 编译版本号可以默认设置 0,然后自增即可 increment_build_number(xcodeproj: ENV['Xcodeproj']) build_app( workspace: ENV['Workspace'], # 编译项目文件,为目录环境下的workspace scheme: ENV['Scheme'], # scheme为环境下的的scheme clean: true, # 构建前先清理项目缓存 silent: true, # 静默构建 output_directory: './fastlane/appstore/', # 设置导出ipa目录 output_name:"#{currentTime}#{ENV['ipa']}") # 包的名称 upload_to_app_store(force: true) # 上传到appstore end desc "上线testflight" # lane 为平台设置,后面的 release_to_testFlight 为 lane 的名称 lane :release_to_testFlight do | options | # 编译版本号自增设置,项目的版本号需要自己设定的和appstore一样,自己项目中设置好即可 increment_build_number(xcodeproj: ENV['Xcodeproj']) build_app( workspace: ENV['Workspace'], scheme: ENV['Scheme'], clean: true, silent: true, output_directory: './fastlane/testflight/',# 设置导出ipa目录 output_name:"#{currentTime}#{ENV['ipa']}") upload_to_testflight end desc "上线蒲公英" lane :adhoc_pgy do |options| # 编译版本号自增设置,项目的版本号需要自己设定的和appstore一样,自己项目中设置好即可 increment_build_number(xcodeproj:ENV['Xcodeproj']) # 获取时间,用于设置包目录或者包名 currentTime = Time.new.strftime("%Y-%m-%d-%H-%M-") logDirectory = "#{currentTime}" build_app( workspace: ENV['Workspace'], scheme: ENV['Scheme'], silent: true, clean: true, output_directory: './fastlane/pgy/', output_name:"#{currentTime}#{ENV['ipa']}",# 设置导出ipa目录 export_method:"ad-hoc") # 导出方式为 ad-hoc # 设置蒲公英的 api_key 和 user_key # pgyer(api_key:'xxb3dd2ab6a5efc2b7d861356854xx', # user_key:'xxx753c46ae83961ed9478bdae86ebxx') # 使用本地环境下的蒲公英 key 信息,运行后首次需要自己输入账号密码 # pgyer(api_key: ENV['api_key'], # user_key: ENV['user_Key']) end $$ \TeX $$ desc "上线firim" lane :adhoc_firim do |options| increment_build_number(xcodeproj:ENV['Xcodeproj']) currentTime = Time.new.strftime("%Y-%m-%d-%H-%M-") logDirectory = "#{currentTime}" build_app( workspace: ENV['Workspace'], scheme: ENV['Scheme'], silent: true, clean: true, output_directory: './fastlane/firim/', output_name: "#{currentTime}#{ENV['ipa']}",# 设置导出ipa目录 export_method:"ad-hoc") # 导出方式为 ad-hoc # 设置 firim 的 api_token firim(firim_api_token:'xxx23412341234xxx') # 使用本地环境的 firim_api_token信息,运行后首次需要输入自己账号密码 # firim(firim_api_token:ENV['firim_api_token']) end end 复制代码
蒲公英 or firim 环境配置
上面的命令配置好了之后,需要根据自己需要上传 蒲公英
和 firim
需要如下配置
蒲公英配置
进入项目目录,执行下面命令
//其他方式的 fastlane add_plugin pgyer // bundle的方式 bundle exec fastlane add_plugin pgyer 复制代码
firim配置
进入项目目录,执行下面命令
//先通过 gem 安装 fir环境 sudo gem install fir-cli 复制代码
然后安装配置 fastlane 的 firim
//其他方式的 fastlane add_plugin firim // bundle的方式 bundle exec fastlane add_plugin firim 复制代码
蒲公英 或 firim 配置完毕后,fastlane 会多出来一个 Punginfile
文件,说明配置成功
,不用更改
运行 fastlane
进入到项目目录,运行下面命令
//其他方式的 fastlane // bundle的方式 bundle exec fastlane 复制代码
运行后,如下所示,会出现一个选择界面,会根据选择的数字,运行对应的 lane
下指令
信息到这,便会理解前面的 desc
与 lane
的名称配置了
此外,如果想 直接运行指定的 lane
,在运行指令后面加上 lane名称
即可
//其他方式的,直接运行某个 lane fastlane [lane名称] // bundle的方式,直接运行某个 lane bundle exec fastlane [lane名称] 复制代码
那么,则会直接执行 对应 lande 的操作
例如: 运行 bundle exec fastlane adhoc_pgy
或者 fastlane adhoc_pgy
运行成功,结果如下所示
最后
上面的配置信息,可以拿来直接用,主要是更改账号
、teamid
、蒲公英
、firim信息
作者:剪刀石头布啊
链接:https://juejin.cn/post/7018472446818779167