打包从来都是一个枯燥乏味的等待流程,手动选择scheme以后点击archive完还得等待Organizer弹出,然后一个个点击,下一步,下一步。。。经常因为网络波动等其他原因,你去喝个咖啡也不是,干看着进度条的显示也不是,效率非常低。虽然和同事讨论过此类问题,终极解决方案当然是硬件升级,但毕竟搞咱们这一行的,还是应当想尽方法使用合适的工具来节省可能的时间来提升效率。
Fastlane,顾名思义,快车道嘛,非常流行的自动打包发布工具,看一下官方的介绍文档开头的代码片段:
lane :beta do
increment_build_number
build_app
upload_to_testflight
end
lane :release do
capture_screenshots
build_app
upload_to_app_store # Upload the screenshots and the binary to iTunes
slack # Let your team-mates know the new version is live
end
很容易看出这两个不同的配置在做什么,beta为测试版本,release为发布版本,“increment_build_number”即为自动增加build版本号,减少每次手动修改的繁琐操作,beta经常需要上传到testflight,这里的“upload_to_testflight”也能很自然的明白。简单的几行代码,就能窥见它的功能,那就让我们从头开始吧。
安装
brew install fastlane
初始化 进入iOS工程目录
fastlane init
Beta版本部署
使用内置的build_app命令来build我们的app,如下:
lane :beta do
build_app(scheme: "MyApp",
workspace: "Example.xcworkspace",
include_bitcode: true)
end
运行如下命令即可:
fastlane beta
如果一切顺利的话,在当前路径下就会生成【ProductName】.ipa文件。
上传
lane :beta do
sync_code_signing(type: "appstore") # see code signing guide for more information
build_app(scheme: "MyApp")
upload_to_testflight
slack(message: "Successfully distributed a new beta build")
end
上面的实例代码在成功上传完testflight后使用slack发了一条成功的状态消息,这就非常方便了。我们可以如法炮制,既然目前团队使用钉钉,那么我们自然而然会想到使用钉钉机器人来通知, 那么就需要涉及到fastlane的plugins了。
安装插件
fastlane add_plugin [name]
本次案例中使用的是fastlane-plugin-ding_talk_msg_push和fastlane-plugin-versioning这两个插件。前者是发送钉钉消息的,后者用来更灵活地修改各种项目的版本号。如果我只想修改workspace下的单个target的build number,可以使用如下代码:
increment_build_number_in_plist(build_number: (latest_testflight_build_number + 1).to_s, target:"YOUR_TARGET_NAME")
这里每次将当前testflight上最新的版本号+1,即可避免重复上传相同版本的问题,省去记忆负担。
回到刚刚的钉钉消息,通过钉钉群的机器人token,我这里临时写在了fastlane配置文件里:
ding_talk_msg_push(token:dingding_token1, text:changlog, at_all: true)
这里的changelog即为我们每次打包的更新日志,我们采用的是临时prompt的形式,支持多行。当然,你也可以去读取readme文档或者指定git log来实现自动填充的效果。
# The user confirms their input by typing `END` and Enter
changelog = prompt(
text: "Changelog: ",
multi_line_end_keyword: "END"
)
TO BE CONTINUED.
“iOS fastlane的使用”上的一条回复
1