使用初衷
公司产品版本比较多,很多版本都需要独立化部署。导致产生了每个地址需要打包,每次打包就是一件麻烦的事情,常常一下午的时间过去了却都浪费在打包这件事情上了。So….研究了下Fastlane。爬了很多坑。写出来让大家参考下,遇到问题了可以私信我。尽我所能帮助你。
基础名词
- Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言
- RVM是一个命令行工具,它允许您轻松地安装,管理和使用从解释器到多组gems多个ruby环境。
- Gems RubyGems简称gems,是一个用于对 Ruby组件进行打包的 Ruby 打包系统。例如经常用的cocoapods就需要 gem 来管理。
- Fastlane是Felix Krause大神写的fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包、发布等工作。
- pgyer/fir 第三方发布测试平台。
Fastlane 安装初始化

- 确保你已经安装了最新版本的Xcode命令行工具:
xcode-select --install
- 选择你的安装方法:推荐使用RubyGems 安装【不出问题就直接进行,最后指出问题点】
| 方法 | os支持 | 描述 |
|---|---|---|
| Homebrew | 苹果系统 | brew cask install fastlane |
| 安装程序脚本 | 苹果系统 | 下载zip文件。然后双击install脚本(或在终端窗口中运行)。 |
| RubyGems | 带有Ruby 2.0.0或更高版本的macOS或Linux | sudo gem install fastlane -NV |
- 初始化
安装完毕后,在终端进入到你的项目目录下。初始化fastlane
fastlane init
按照提示输入开发者账号(付费账号) 输入Bundle Identifier 用于初始化配置,后期可在配置文件改。随便输入
根据提供的信息,fastlane会自动为您生成一个配置。\
您可以看到新创建的./fastlane目录,包含Appfile和Fastfile文件。
最有趣的文件是fastlane/Fastfile,其中包含分发您的应用程序所需的所有信息。\
这样就完成了初始化
蒲公英插件安装
初始化完毕后直接在终端输入
//fastlane fastlane search_plugins//列出可用插件
fastlane add_plugin pgyer//安装插件

插件安装成功\
./fastlane目录下会生成Pluginfile的一个文件。\
插件安装不成功,就是fastlane安装的有问题。
配置Fastlane
| 文件名 | 描述 |
|---|---|
| Appfile | 从 Apple Developer Portal 获取和项目相关的信息 详情 |
| Fastfile | 核心文件,存放lane任务 |
| Deliverfile | deliver的配置文件,从 iTunes Connect 获取和项目相关的信息详细 |
| metadata | 同步iTC中的元数据 |
| screenshots | 同步iTC中的截图 |
- #### fastlane工具集是配置fastlane最重要的
| 文件名 | 描述 |
|---|---|
| match | 证书和配置文件管理工具会重置证书,推荐新项目使用。���������� |
| cert | 自动创建管理iOS代码签名证书,会去自动创建证书,永远不会撤销现有的证书。如不能创建会报错。 |
| sigh | 用来创建、更新、下载、修复Provisioning Profile的工具 |
| gym | 自动化编译打包工具.shenzhen的代替品.���������� |
| pem | 自动生成、更新推送配置文件 |
| produce | 如果你的产品还没在iTunes Connect(iTC)或者Apple Developer Center(ADC)建立,produce可以自动帮你完成这些工作 |
| deliver | 自动上传截图,APP的元数据,二进制(ipa)文件到iTunes Connect |
| snapshot | 自动截图(基于Xcode7的UI test) |
| frameit | 可以把截的图片自动套上一层外边框 |
| pilot | 管理TestFlight的测试用户,上传二进制文件 |
| boarding | 建立一个添加测试用户界面,发给测试者,可自行添加邮件地址,并同步到iTunes Connect(iTC) |
| scan | 自动运行测试工具,并且可以生成漂亮的HTML报告 |
| spaceship | 为pilot,boarding和deliver等工具提供和 iTC 和 ADC 的交互API。spaceship本来是个独立的项目,后来被Fastlane收编进来 |
| WatchBuild | 是一个独立的iTC监控工具,开启WatchBuild可以监控iTC上的文件状态,弹出MacOS自带的Notification |
| supply | Android自动上传到Google Play工具(如果有时间,我想把国内提供API的Android Store都写个插件自动上传,这个问题从10年我刚开始工作就觉得是个痛点) |
| screengrab | Android的自动截图工具 |
关于fastfile:
- 里面存放了很多lane,每个lane相当于按顺序执行的工作流。每个lane可以存放多个action,action可以看做具体的执行动作
- 生命周期
| 执行顺序 | 方法名 | 说明 |
|---|---|---|
| 1 | before_all | 在执行 lane 之前只执行一次 |
| 2 | before_each | 每次执行 lane 之前都会执行一次 |
| 3 | lane | 自定义的任务 |
| 4 | after_each | 每次执行 lane 之后都会执行一次 |
| 5 | after_all | 在执行 lane 成功结束之后执行一次 |
| 6 | error | 在执行上述情况任意环境报错都会中止并执行一次 |
- 任务定义
| 定义 | 是否必须 | 说明 | 备注 |
|---|---|---|---|
| desc | false | 方法描述 | 可多次使用打到换行的目的 |
| name | true | 方法名 | 符号化的方法名 |
| options | false | 方法参数 | 返回 Hash 类型 |
| task | true | 方法主体 | 参考 ruby 的方法代码且支持 ruby 代码 |
- 一个简单的lane
lane :deploy do
# 执行 pod instasll
cocoapods
# 执行 carthage bootstrap
carthage
# 增加build版本号
increment_build_number
# 编译代码
gym
# 发布到Apple Store
deliver(force: true)
end
这个是我自己 配置到蒲公英的。同时导出ipa到./build文件夹下,以版本号和打包时间命名。这样就保留了每一版本包了。
只需要项目根目录下执行即可
fastlane topgyer desc:更新内容
desc "上传到测试版本到蒲公英"
desc "生成本地版本"
lane :topgyer do|option|
#自动增加build
# increment_build_number
#自动生成证书
cert
#自动生成配置文件
# sigh(force: true)//我使用的是手动配置关闭这个。如需自动则打开即可
#gym配置,打包输出。
#fastlane gym --export_method ad-hoc
#fastlane gym --export_method enterprise
#fastlane gym --export_method app-store
scheme_name = "xxxx"//应用名词
#获取version和build版本号
version = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleShortVersionString")
build = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleVersion")
#导出路径
output_directory = "./build"
#导出名称
output_name = "#{scheme_name}_#{version}_#{build}_#{option[:desc]}_#{Time.now.strftime('%Y%m%d%H%M%S')}.ipa"
gym(
export_method: "enterprise",//企业账号
scheme: scheme_name, //名词
clean: true,//是否清理上次编译
output_directory: output_directory,//导出路径
output_name: output_name//导出名词
)
pgyer(api_key: "1212121", user_key: "121212", update_description: "#{option[:desc]}")//蒲公英设置查看key
end
- 手动配置证书。 fastlane初始化Gym fastlane gym会生成一个Gymfile的文件。增加下面代码,同时不要使用自动生成配置文件\
sigh(force: true)
export_options(
provisioningProfiles: {
"com.xxx.xxx" => "profilesName",
"com.xxx.xxxxxx" => "profilesName1"
})
- scheme 设置
没有在gym或者fastfile写应用的名字的话。打包的时候会自动检测当前目录下的文件。列出来供你选择。\
也可以设置一下在gym中直接赋值,或者fastfile中增加即可。
问题汇总
使用过程中出现了很多问题,大部分问题都已经有人躺过水了,所以有问题先去看看issues
| 问题 | 解决方案 |
|---|---|
| ruby -v 版本低于2.0.0 | gem版本不对 请升级ruby请更新gems |
| cocoapods没有放到Gemfile中 | Gemfile文件中增加cocoapods |
| fastlane init 提示sudo | 请检查ruby路径。如果没问题请检查user目录下.bash_profile。环境变量设置是否有效。export PATH=” HOME/.fastlane/bin: PATH” |
| 如果初始化成功 | 其他的问题大部分都是证书问题了。 |
如需转载请备注简书地址
http://www.jianshu.com/u/bee103cd1f97
不懂的可以Q719251357
参考
https://whlsxl.github.io/fastlane1/
本文介绍如何使用 Fastlane 实现 iOS 和 Android 应用的自动化打包和发布流程。通过配置 Fastlane 的各项工具,如 gym、deliver 和 pilot,简化打包过程并提高效率。
682

被折叠的 条评论
为什么被折叠?



