fastlane 打包用于无人值守提交应用包到TestFlight ,蒲公英,fir.im等第三方平台,感觉觉得速度方面可能会慢一点,但是优势在于
- 无人值守
- 自动拉取最新代码
- 自动clean,保证代码没有缓存干扰
- 自动打tag标签
安装
个人建议,专门用一台电脑来打包,mac 是支持远程控制的,或者是用一个配置比较好的电脑,让他给你建一个用户,你就可以使用他的电脑了,而且不会耽搁彼此的工作(共享屏幕的方法)
安装准备
- xcode 插件安装或更新:
xcode-select --install
- 更新ruby 最好是最新版本吧
正式安装
-
sudo gem install fastlane -NV
(如果报错了就执行:sudo gem install fastlane -n /usr/local/bin
) -
fastlane init
(如果是swift:fastlane init swift
) - 然后就wait.....
使用
以下是在下配置文件,支持发布发布不同的环境到不同的平台
# 该文件用来命令行打包,自动pull add_tag ,commit,auto_uplaod 到(testflight,fir.im,pgy)
# 1. cd 到对应的工程目前下
# 2.执行对应的命令
# a.发布到蒲公英: (开发环境) fastlane pgy
# b.发布到fir.im:(测试环境) fastlane fir env:dev/test/prelive/release
# c.发布到testFlight:(预生产环境) fastlane tf
# d.发布到testFlight:(正式环境) fastlane store
# f. 同时发布到testflight 和fir.im fastlane tf_fir
# e.同时发布到所有环境 fastlane all
#
#
#
#
#
#
#
default_platform(:iOS)
platform :iOS do
lane :release_ready do
UI.message("----------release_ready----------")
ensure_git_status_clean ## 确保当前的代码都已经提交完成
git_pull
increment_build_number # 自增build
commit_version_bump # 检查build
push_to_git_remote
end
lane :release_finsh do
UI.message("----------release_finsh----------")
push_git_tags
end
lane :pgy do
UI.message("----------发布一个蒲公英 开发版本----------")
release_ready
sync_code_signing(type: "adhoc")
build_app(
workspace: "WeTalk.xcworkspace",
scheme: "WeTalk",
export_method: "ad-hoc",
configuration: "Debug",# Debug, Test,Prelive, ,Release
silent: true,
clean: true,
)
pgyer(api_key: "you api key", user_key: "your user key")
add_git_tag(tag:"dev/#{get_version_number}(#{get_build_number})")
release_finsh
end
lane :fir do |options|
UI.message("----------发布一个fir.im 测试版本----------")
release_ready
env = options[:env]
config = "Test"
message = "测试环境"
if env == "dev"
config = "Debug"
message = "开发环境"
elsif env == "test"
config = "Test"
message = "测试环境"
elsif env == "prelive"
config = "Prelive"
message = "预生产环境"
elsif env == "release"
config = "Release"
message = "正式环境"
else
config = "Test"
message = "测试环境"
end
sync_code_signing(type: "adhoc")
build_app(
workspace: "WeTalk.xcworkspace",
scheme: "WeTalk",
export_method: "ad-hoc",
configuration: config,
silent: true,
clean: true,
)
firim(firim_api_token: "your token",app_changelog:message)
add_git_tag(tag:"#{env}/#{get_version_number}(#{get_build_number})")
release_finsh
end
lane :tf do
UI.message("----------发布一个testfligth预生产版本----------")
release_ready
sync_code_signing(type: "appstore")
build_app(
workspace: "WeTalk.xcworkspace",
scheme: "WeTalk",
configuration: "Prelive",
silent: true,
clean: true,
changelog:"预生产环境"
)
upload_to_testflight
add_git_tag(tag:"prelive/#{get_version_number}(#{get_build_number})")
release_finsh
end
lane :store do
UI.message("----------发布一个appStore预生产版本----------")
release_ready
sync_code_signing(type: "appstore")
build_app(
workspace: "WeTalk.xcworkspace",
scheme: "WeTalk",
configuration: "Release",
silent: true,
clean: true,
changelog:"正式环境"
)
upload_to_testflight
add_git_tag(tag:"release/#{get_version_number}(#{get_build_number})")
release_finsh
end
lane :tf_fir do
UI.message("----------同时发布testFlight 和 fir.im 版本----------")
fir # fir.im 测试环境
tf # testflight 预生产环境
end
lane :all do
UI.message("----------发布所有版本----------")
pgy # 蒲公英,开发环境
fir # fir.im 测试环境
tf # testflight 预生产环境
store # 正式环境
end
拓展
不同环境的配置
我们在开发的时候会遇到很多环境,比如有开发环境,测试环境,预生产环境,生产环境,很明显,Xcode 默认的Debug 和release 是不够用的,幸运的是,我们可以对其进行扩展,如下:
-
添加你想要的配置,你可以duplicate 系统的debug or release ,如果你要发布应用,建议选择duplicate release,因为release 会多一些优化配置
- 设置他们对应的宏定义,系统默认只有一个
DEBUG
- 配置不同的环境
#ifdef DEBUG // 开发环境
your code
#elif TEST // 测试环境
your code
#elif PRELIVE // 预生产环境
your code
#elif RELEASE // 正式环境
your code
#else // 默认也是正式环境
your code
#endif
-
结果,你就在可以不用修改任何代码,在开发或者发布的时候随意切换了
制作可执行的脚本
- 创建一个
.sh
后缀的脚本文件 - 使用命令:
sudo chmod 777 yourfile.sh
修改权限 - 编写你想要执行的脚本
-
修改双击打开方式:
- 收工,双击试试
问题记录
附件
我之前配置的其他fastlane 脚本,都放在这里了,或许对你有一些帮助github 地址