回想一下咱们发布应用,要进行多少步操做。一旦其中一步失误了,又得从新来。这完彻底全不是咱们工程师的风格。在软件工程里面,咱们一直都推崇把重复、流程化的工做交给程序完成,像这种浪费人生的工做,实在是不该该浪费咱们的人生。此次的文章主角就是为了解放咱们而来—— fastlane
。这个明星库在 github
已经高达 1w 多的start量。ios
fastlane 是 iOS (还有 Android ) 布署和发布最好的一套工具。它处理了全部重复的工做,例如生成截图,处理签名和发布应用。git
fastlane实际是由Ruby写的,使用Ruby的Gem安装是咱们的不二选择github
sudo gem install fastlane -NV
复制代码
接着在终端进入项目里面(目前fastlane swift 正在测试,就以以前的版本讲解)swift
fastlane init
复制代码
按照提示初始化完成以后,在项目下面生成 fastlane 文件夹api
先普及两个重要的文件,初始化后在./fastlane
文件件便可找到bash
存放着 AppleID 或者 BundleID 等一些fastlane须要用到的信息。基本上咱们不须要改动这个文件的内容。 它放到你项目下面的 ./fastlane
文件夹下面,默认生成的文件以下:服务器
app_identifier "net.sunapps.1" # The bundle identifier of your app
apple_id "felix@krausefx.com" # Your Apple email address
# 若是帐号里面有多个team,能够指定全部的team
# team_name "Felix Krause"
# team_id "Q2CBPJ58CA"
# 指定 App Store Connect 使用的team
# itc_team_name "Company Name"
# itc_team_id "18742801"
复制代码
更多详细的配置,能够参考一下文档 Appfile Docapp
一开始生成的Fastlane
文件大概以下:ide
platform :ios do
before_all do
end
desc "Runs all the tests"
lane :test do
scan
end
# You can define as many lanes as you want
after_all do |lane|
end
error do |lane, exception|
# slack(
# message: "Error message"
# )
end
end
复制代码
Fastfile
里面包含的块类型有四种:工具
before_all
用于执行任务以前的操做,好比使用cocopods
更新pod库after_all
用于执行任务以后的操做,好比发送邮件,通知以前的error
用于发生错误的操做lane
定义用户的主要任务流程。例如打包ipa
,执行测试等等以下面,来说解一下lane的组成。
desc "Push a new beta build to TestFlight" //该任务的描述
lane :beta do //定义名字为 beta 的任务
build_app(workspace: "expample.xcworkspace", scheme: "example") //构建App,又叫gym
upload_to_testflight //上传到testfilght,
end
复制代码
该任务的做用就是构建应用并上传到 TestFilght。下面有两个 Action
build_app
生成 ipa 文件upload_to_testflight
把 ipa 文件上传到 TestFilght在控制台进入项目所在的文件夹下面,执行下面命令
fastlane beta
复制代码
便可执行任务,按照上面的任务,会生成 ipa 并上传到 TestFilght。其实很简单,定义好任务,控制台执行任务便可。
那么如何写一个咱们属于本身的 lane 呢? 就以发布 ipa 到 fir 为例
desc "发布到Fir"
lane :pulish_to_fir do
# 运行 pod install
cocoapods
# 构建和打包ipa
gym(
clean: true,
output_directory: './firim',
scheme: 'xxxx',
configuration: 'Test',
export_options: {
method: 'development',
provisioningProfiles: {
"xxx.xxx.xxx": "match Development xxx.xxx.xxx"
},
}
)
# 上传ipa到fir.im服务器,在fir.im获取firim_api_token
firim(firim_api_token: "fir_token")
end
复制代码
下面解释一下上面的内容
cocoapods
复制代码
在项目里执行 pod install
,详细例子可见 Doc
sh "./update_version.sh"
复制代码
这是由做者本地写的更新版本号的脚本
gym (又名build_app)
复制代码
gym
是fastlane的里面一部分,它能够方便生成和签名ipa,能为开发者省下很多功夫。
firim
复制代码
firim
是一个插件,执行 fastlane add_plugin firim
便可把插件装好
fastlane里面内置不少经常使用的Action,具体的使用方法建议多看一下官方文档。
fastlane项目里面也有不少其余公司的 例子,在不清楚怎么使用的时候,看看这些例子也何尝不是一种方法。