iOS打包烦不烦?偶尔一次还好,但是一天三五次测试打包肯定让人烦,不信你试试!
曾经我以为自动化打包很没必要,所以一直都是Xcode中规中矩的打包操作然后发布;而如今我正在经历着一天之中反复的测试、回归,有时一天打包发布个三五次,不断的来回告诉测试妹子打包发布了去下载吧,有时妹子也烦。
同时不断的重复性的build、 archive、导出、发布测试平台实属枯燥。再加上电脑卡、反应慢,打个包一二十分钟过去了也耽误不少时间,所以自动化打包迫在眉睫。
所以我们要实现一行命令自动打包、发布、然后自动发消息通知测试。
最后我们选择了Fastlane 、 蒲公英发布测试;
现在我们只需要一行命令搞定让枯燥的打包自动进行,自动发布,自动发消息通知测试,而且整过流程用时几分钟就能搞定,比以前大大的少了很多,真是大大的提高工作效率;
我们操作路线: Fastlane自动打包 -> 蒲公英发布测试 ->钉钉
Fastlane 实现自动打包,自动发布到蒲公英平台
蒲公英:App发布平台;
钉钉,建立的开发测试群,每次自动打包发版后,系统机器人就会自动提示如下:
是不是很方便?群里的每个人都知道了,再也不用我们去通知了!
接下来就按步骤去实现它吧。。。
Fastlane安装与配置
Fastlane基于ruby环境自动化工具集,它不是一个工具,它是一系列的工具的集合,基本上涵盖了打包,签名,测试,部署,发布,库管理等等移动开发中涉及到的内容。 同时该套件也支持与 Jenkins 、CocoaPods、xctools 等其他第三方工具的集成。
- 1、安装 Xcode command line tools:
xcode-select --install
安装过会提示已经安装;
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
- 2、安装Fastlane
sudo gem install fastlane
Successfully installed fastlane-2.193.1
Parsing documentation for fastlane-2.193.1
Done installing documentation for fastlane after 5 seconds
1 gem installed
- 3、fastlane 初始化
fastlane init
cd 打开工程所在目录,执行fastlane init
出现如下提示:
[13:21:46]: What would you like to use fastlane for?
1. Automate screenshots
2. ✈️ Automate beta distribution to TestFlight
3. Automate App Store distribution
4. Manual setup - manually setup your project to automate your tasks
选择4 ,手动设置工程文件;然后一路enter
然后可看到工程目录下多了几个文件:
其中Appfile、Fastfile就是我们需要修改的文件;
- Appfile:App相关的信息,写以下三项就可以:
app_identifier "com.XX.XX"
apple_id "appid"
team_id "teamid"
- Fastfile:描述打包相关的配置信息,初始内容如下:
default_platform(:iOS)
platform :iOS do
desc "Description of what the lane does"
lane :custom_lane do
# add actions here: https://docs.fastlane.tools/actions
end
end
一个lane
可理解为就是一个任务,我们打包发布到蒲公英是一个任务,打包发布到App Store也是一个任务;
lane中可添加多个action,也就是具体的操作,比如打包方法操作是一个action,发布蒲公英操作也是一个action;
Fastlane本身自有的一些lane,可以在不同的 阶段做一些额外的操作:
before_all,就是在执行一次脚本之前首先执行的代码,我们可以在这里面执行一些公共的东西,比如git_pull,cocoapods。
after_all, 成功结束之后,处理共有的后置逻辑。
before_each,每次执行 lane 之前都会执行一次。
after_each,每次执行 lane 之后都会执行一次。
error,在执行上述情况任意环境报错都会中止并执行一次。
我要发布到蒲公英,所以完整的配置如下:
default_platform(:iOS)
platform :iOS do
lane :hs_test do
# add actions here: https://docs.fastlane.tools/actions
gym(
clean: true,
output_directory: './fastlane/build',
output_name:"XX.ipa",
scheme: 'XXX',
configuration: 'Debug',###########
# sdk:"iOS 12.0",
# archive_path:"./fastlane/Archive",
include_symbols:true,
export_options: {
method: 'development',#测试包
provisioningProfiles: {
"com.xxxx.xxx" => "20210906_dev" #测试打包描述文件
},
}
)
updateVersionDes = "提到蒲公英的版本更新信息;"
pgyer(
api_key: "蒲公英API Key",
user_key: "蒲公英user_key"
update_description: updateVersionDes
)
end
end
然后再终端中输入
fastlane hs_test (可理解为就是我们的任务名)
然后剩下的就不用我们管了,它会自动的帮我们处理余下的所有工作;
参数解释:
- gym:fastlane 封装的打包方法、会自动处理打包、签名等操作;
配置项
clean:每次执行前是否清空工程;
output_directory:输出文件目录
output_name:App名字’
scheme:App scheme
configuration:The configuration to use when building the app. Defaults to 'Release'
export_options:导出时配置项,及发布证书相关;
我用到的不多,其他参数还很多具体参看官方文档吧。
至此关于Fastlane 配置完成了,现在就可以愉快的打包了,然后在工作目录中看到生成的IPA包。
蒲公英设置
蒲公英支持Webhook机制,可以将事件消息通知分发出去;所以当我们发布新版本时可以给钉钉或微信发送消息,通知App版本更新;
打开指定的应用,选择【内测分发】-【Webhook设置】创建新的Webhook
钉钉设置
打开钉钉群【设置】-【智能群助手】-创建机器人
复制Webhook URL https://oapi.dingtalk.com/robot/send?access_token=000351XXXXXXXXXX
,到蒲公英Webhook URL ;
至此所有配置算是完成了,现在我们就可以实现一行命令打包,然后去逍遥自在了_;
APP自动化方面操作功能很强大,能做的还有很多,今天只是初步实现测试环境自动化打包,更高级的用法还有待继续摸索。