背景
常常用Xcode打包上传,太慢了,有时候自己有事,还得麻烦同事打包上传。为啥不搞个自动化,一键搞定?
首先要了解有哪些上传的方式。
上传方式
1. 平淡,官方的方式
官方文档中提到了上传工具
这里方法的前提都是已经编译好一个ipa包
1.1 Xcode
就是常用的慢🐌的方式,只需要点点点,有时需要漫长等待,最低效率
1.2 altool
命令行上传,iOS应用有两个步骤验证、上传,Mac应用有三个步骤验证、上传、公证️
以下是官方格式,实际使用会遇到一些密码验证问题,这位老哥提到了
$ xcrun altool --validate-app -f file -t platform -u username [-p password] [--output-format xml]
$ xcrun altool --upload-app -f file -t platform -u username [-p password] [--output-format xml]
因为AppId都开启了双向验证,所以上面的账号密码方式会报错。
需要创建密钥,利用苹果认可的密钥来上传即可。
下载得到一个AuthKey_xxxxx.p8的文件,这个文件一定要放在./private_keys或~/private_keys或~/.private_keys或~/.appstoreconnect/private_keys,任意一个即可
那么我们使用的格式就变成了下面这样,apiKey就是密钥ID,也是.p8文件的名称。
$ xcrun altool --validate-app -f file/xxx.ipa -t ios --apiKey 8X26VXG86Z --apiIssuer dc17cxxce-xxx-xxx-a110-e1c0ad99xxx
$ xcrun altool --upload-app -f file/xxx.ipa -t ios --apiKey 8X26VXG86Z --apiIssuer dc17cxxce-xxx-xxx-a110-e1c0ad99xxx
1.3 Transporter
估计很多人没用过,网络正常的情况下,几分钟上传完毕,就是快。
2. 有趣,fastlane
上面的几种方法,都是有ipa包的前提下,有没有一条龙,傻瓜式的。当然有,连我都用上了,对就是fastlane
闲话:
入门还是不要百度了,因为你会陷入各种不同的实现,一上来就是各种
FastFile的配置,各种插件,一脸黑人问号。所以还是先跟着官方教程走,嚼不烂的才去看别人怎么嚼的。
如果你仅仅只是使用打包、上传,根本不用关心
FastFile配置,甚至可以忘了它。因为要先实现你的效果,你才有信心去看的原理和配置。
在xxx.xcodeproj同级目录下进入终端,演示的是OC项目
fastlane init
4个选项,选一个
[15:33:31]: 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
?
假如选择2,然后让你输入账号、密码,根据提示回车就行。
[15:36:06]: Please enter your Apple ID developer credentials
[15:36:06]: Apple ID Username:
最后会提示你只需要运行fastlane beta,就可以实现上传
fastlane beta
根据打印信息,可以看出会自动完成了几个步骤
Step: default_platform大概是设置平台(iOS或安卓),还有些默认设置Step: increment_build_number递增build数Step: build_app编译打包Step: upload_to_testflight上传
3. 解脱,自动化
目的就是一键上传
先跟着蒲公英教程把本地Jenkins环境搭建好。
3.1 创建一个Item
把描述、git都配置好后,添加脚本,脚本执行的路径一定要在xxx.xcodeproj同级目录下。
3.2 定时触发
如果都不想点,甚至忘了自动化这个事情,那就搞个定时触发器,这位老哥有讲。
我设置的是每晚8点打包上传
3.3 一些错误
上传到app store时会报错, 大概意思是之前有一个未完成的上传,这位老哥提到了,说要删除缓存,其实往上翻也能从日志里面看到。
Cannot proceed with delivery: an existing transporter instance is currently uploading this package
缓存目录,找到删除即可
/Users/apple/Library/Caches/com.apple.amp.itmstransporter/UploadTokens/hudo.local_85VA373D3S_1488443307.itmsp.token
上传速度
其他速度我没有准确记录,但是相比之下Transporter是真的快,1分钟左右