前言
在开发中经常需要打测试包,然后上传至蒲公英等三方平台,这其中需要经历的操作为:
- 设置项目的打包环境
- 利用 xcode 进行打包
- 上传至蒲公英等三方平台
每一次打包上面的过程必不可少,而且都是手工的,本篇文章我们采用CD(Continuous Delivery)持续交付和CI(Continuous Integration)持续集成来进行自动化打包一键操作,解放双手,拒绝手动的重复低效率劳动。
本篇文章讲解如何使用 fastlane 自动打包
1. 安装环境
1.1 安装 Homebrew
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
安装成功,查看版本
1.2 安装 fastlane
brew install fastlane
安装成功,查看版本
2. fastlane 配置
2.1 进入到工程目录 .xcworkspace 下面
打开终端 cd 到工程目录下,如下图
2.2 初始化 fastlane
fastlane init
终端里面让您选择,我这边是选择了 4;
中间会有很多 Continue by pressing Enter ⏎ ,需要你敲几次回车键
然后就会看到生成 fastlane 文件,如下图所示
2.3 加入蒲公英插件
fastlane add_plugin pgyer 或者 bundle exec fastlane add_plugin pgyer
具体查看蒲公英官方文档 使用 Fastlane 上传 App 到蒲公英
中间有一个需要 按 y 回车确认,这是第二次按照截图了,可能有些不一样
安装后 Gemfile 信息增加如下
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)
2.4 编辑 Fastfile 脚本文件
打开刚刚生成的 fastlane/Fastfile 文件,默认生成文本如下
2.4.1最终 的 Fastfile 脚本文件内容
蒲公英账号需要自己配置,如果1.3 未执行,或者没有账号,请注释或删除掉, 2.4.2 有如何获取蒲公英账号key的截图,
default_platform(:ios)
platform :ios do
desc "Description of what the lane does"
# 打包时候用的名称 例如 fastlane app
lane :app do
# add actions here: https://docs.fastlane.tools/actions
gym(
# 每次打包之前clean一下
clean: true,
# 打包出 ipa 文件的路径,我放到了桌面文件夹,你自行更改文件夹
output_directory: '/Users/hengqianjin/Desktop/APP',
# 打包的名称,可任意取
output_name: 'myApp.ipa',
# 项目的 scheme,自己项目名 .xcworkspace 前面的项目名就是
scheme: "Farm",
# 默认 Release,Release or Debug
configuration: 'Debug',
# 是否包含 bitcode
include_bitcode: false,
# 是否包含 symbols
include_symbols: true,
# 打包导出方式,包含 app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application
export_method: 'development',
# 这个设置是为了设置 xcode 自动配置证书和配置文件,当然也可以手动配置,可以参考文档
export_xcargs: '-allowProvisioningUpdates'
)
# mac上的通知弹窗,通知打包完毕
notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "打包成功,已导出安装包", message: "准备发布到蒲公英中……")
#配置上传蒲公英账号 蒲公英的 api_key和 user_key 用自己蒲公英账号的,别用我的!!!如果没有可删除
pgyer(api_key:'fbf25d2a525e12d5084b0ae09098ab7b', user_key: '12bba6204bd7c3e26375f653f8086358', update_description: "测试fastlane自动打包")
end
end
2.4.2蒲公英的 key 获取
去自己的蒲公英账号好复制即可
3. fastlane 自动打包上传
3.1 运行脚本,进行自动化打包
fastlane XXX 或者 bundle exec fastlane xxx
这个 XXX,就是 Fastfile 文件里面,lane:后面的文字,我的名称是 app,就是 fastlane app
3.2 打包成功,生成.ipa文件、上传至蒲公英发布、 mac 上发送通知
成功提示
mac 上成功通知
蒲公英上上传成功
你output_directory 设置的文件夹中的 myApp.ipa
4.问题or总结
4.1 fastlane 上面打包步骤支持 OC 和Swift
我分别使用了OC创建的项目和Swift创建的项目,均能打包发布成功
4.2 使用之前请确保证书齐全
请使用之前保证 Xcode 能正常打包没问题,否则会导致打包失败,亲测Swift项目无证书打包失败
4.3 fastlane init 问题
由于 https://rubygems.org 部署在国外,有时候可能因为网络原因导致失败!(可能,这里是可能失败,网络好可以无视)
失败时候终端提示 bundle update,同时Gemfile不会生成Gemfile.lock文件,而且会导致后续打包失败
4.3 问题解决办法
打开Gemfile, 进行替换源 https://rubygems.org/ 替换为 https://gems.ruby-china.com/
#source "https://rubygems.org"
https://gems.ruby-china.com/
替换后执行 bundle update
4.4 自动打包耗时问题
此处只是自动打包,但是依旧需要时间的,项目越大越耗时,只是节省了手动操作步骤
参考文章
最简单安装 brew 的方法
iOS 自动化打包(fastlane),真香定律
iOS 基于 fastlane 和 jenkins 的自动化打包
iOS 自动化打包发布(Fastlane + 蒲公英)