Transporter
升级到Xcode11后,删掉了 Application loader工具,而使用 Xcode自带的上传功能比较卡,并不是很好用,而苹果推出的Transporter上传工具,它则比较喜欢转圈,经常停在正在提交app store验证2个小时而一动不动。Transporter工具的出色表现,是这样的:爱的魔力转圈圈,一转就能转半天,没有进度,没有提示,只有沉默。不过吐槽归吐槽,虽然我失败了6个小时,但最终还是依靠Transporter进行的上传,并且在半小时之内就上传成功了,可能这并不是Transporter的锅,而是网络的锅。我最终并没有翻墙,因为我不会,但是如果能翻墙的话,Transporter的表现应该会更好。
简洁的应用程序图标:
• 只需将内容拖放到 Transporter 中即可开始使用。 • 同时验证和上传多个文件以快速交付。 • 查看交付进度(包括验证警告、错误和交付日志)以便快速修复任何问题。 • 查看过去交付的历史记录,包括日期和时间。
简洁的操作界面 :
上传中还是有进度的,但刚开始提交app store验证时如果Transporter表现不佳,可以轻易让人心态爆炸。
xcrun altool
我斗胆尝试使用xcrun altool工具在终端进行上传ipa文件。altool只是一个上传工具,而非打包工具,就跟Application Loader的定位是一样的,所以需要你用archive打包并导出(export)这个ipa包,放在桌面上以供上传使用。记录了一下xcrun altool的上传过程,虽然我并没有通过xcrun altool上传成功,即便是ipa验证成功了,但是上传时还是失败了N次,但是过程还是很值得学习的。
首先使用xcrun altool上传ipa,是需要去App Store Connect(应用商店连接)申请App Store Connect API的权限、密钥 ID以及Issuer ID,用于后续的验证与上传使用,过程如下:
1.使用开发者账号登录https://appstoreconnect.apple.com,进入App Store Connect的首页后,点击用户与访问。
2.进入用户和访问后,在头部位置选择密钥,如果是第一次申请密钥,需要先在这个页面申请申请App Store Connect API的权限,申请权限后才能开始申请密钥,过程如下:
在生成密钥的弹框内输入密钥的名称,以及选择要申请的密钥权限,之后点击生成,如图:
生成完成后会出现对应的密钥,如图:
3.生成密钥后,密钥是需要下载下来才可以使用的,点击下载 API 密钥,会提示该密钥只能下载一次,下载之后,下载 API 密钥的选项就会消失,如图:
4.点击下载后,据说会生成一个扩展名p8的文件,然鹅我点击下载之后,并没有生成文件,而是跳转了一个网页,如图:
5.可这个文件必须要下载下来并且放到指定的路径中,否则一会输入命令行进行操作时,会当场报错,既然没自动生成,就手动导出吧。(ps:不知道是不是这里导致我后面验证ipa成功,但上传时却失败的原因)。操作如图:
在网页中右击,打开操作栏 ——> 选择将页面存储为,如图 :
之后会弹出这样一个操作框,输入文件名——>选择格式——>存储——>不追加。如图:
6.此时我们已经得到了一个放置在桌面的文件,如图:
7.但这个文件要放到指定的路径中,否则是没有作用的,接下来就要放置文件了,这个文件要放置的路径如下:/Users/XXXXX/.private_keys/AuthKey_XXXXXXXXXX.p8,此时是没有.private_keys问价夹的,这个文件夹需要手动创建,打开终端,执行如下命令:
//前往根目录
$ cd ~
//在用户根目录下创建一个名叫.private_keys隐藏文件夹
$ mkdir .private_keys
如图:
接着你可执行如下命令,查看文件夹是否创建了:
//查看根目录下所有的文件
$ ls -la
如图:
当然你也可以在屏幕上command + shift + .(这是个点),以快捷键的方式显示所有隐藏文件,然后在用户根目录下进行寻找,如图:
如果文件过多,可以执行如下命令:
//前往.private_keys文件夹
$ cd .private_keys/
//输出文件夹路径
$ pwd
拿到路径后直接访达——>前往——>前往文件夹,最后将放在桌面的p8文件拖入.private_keys文件夹中。
8.接下来在终端返回根目录就可以使用xcrun altool的命令行进行ipa文件的验证与上传了,下面分别是验证与上传的命令行:
验证ipa :
$ xcrun altool --validate-app -f 包的绝对路径 -t ios -u 你的苹果账号 --apiKey 密钥的ID --apiIssuer Issuer ID --verbose
上传ipa :
$ xcrun altool --upload-app -f 包的绝对路径 -t ios -u 你的苹果账号 --apiKey 密钥的ID --apiIssuer Issuer ID --verbose
注:apiKey后面输入的即是在App Store Connect中申请的密钥 ID。
apiIssuer后面输入的即是在App Store Connect中申请的Issuer ID。
操作如图:
在输出一堆东西后,返回了结果,这是因为我已经使用Transporter上传成功了:
Error Domain=ITunesConnectionOperationErrorDomain Code=1091 "Redundant Binary Upload. You've already uploaded a build with build number '1' for version number '1.0.0'. Make sure you increment the build string before you upload your app to App Store Connect. Learn more in Xcode Help .
Error Domain=ITunesConnectionOperationErrorDomain Code=1091\“冗余二进制上载。您已经上载了版本号为“1.0.0”的内部版本号为“1”的内部版本。请确保在将应用上载到应用程序商店连接之前增加生成字符串。在Xcode帮助中了解更多信息。