通过终端-> xcrun altool上传ipa文件

4,432 阅读4分钟

Transporter

升级到Xcode11后,删掉了 Application loader工具,而使用 Xcode自带的上传功能比较卡,并不是很好用,而苹果推出的Transporter上传工具,它则比较喜欢转圈,经常停在正在提交app store验证2个小时而一动不动。Transporter工具的出色表现,是这样的:爱的魔力转圈圈,一转就能转半天,没有进度,没有提示,只有沉默。不过吐槽归吐槽,虽然我失败了6个小时,但最终还是依靠Transporter进行的上传,并且在半小时之内就上传成功了,可能这并不是Transporter的锅,而是网络的锅。我最终并没有翻墙,因为我不会,但是如果能翻墙的话,Transporter的表现应该会更好。

简洁的应用程序图标:

截屏2019-12-22下午5.18.31.png

• 只需将内容拖放到 Transporter 中即可开始使用。 • 同时验证和上传多个文件以快速交付。 • 查看交付进度(包括验证警告、错误和交付日志)以便快速修复任何问题。 • 查看过去交付的历史记录,包括日期和时间。

简洁的操作界面 :

截屏2019-12-22下午12.03.18.png

截屏2019-12-22下午12.18.25.png

上传中还是有进度的,但刚开始提交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的首页后,点击用户与访问。

截屏2019-12-22下午2.00.25.png

2.进入用户和访问后,在头部位置选择密钥,如果是第一次申请密钥,需要先在这个页面申请申请App Store Connect API的权限,申请权限后才能开始申请密钥,过程如下:

截屏2019-12-22下午2.14.03.png

在生成密钥的弹框内输入密钥的名称,以及选择要申请的密钥权限,之后点击生成,如图:

截屏2019-12-22下午2.34.57.png

生成完成后会出现对应的密钥,如图:

截屏2019-12-22下午2.54.25.png

3.生成密钥后,密钥是需要下载下来才可以使用的,点击下载 API 密钥,会提示该密钥只能下载一次,下载之后,下载 API 密钥的选项就会消失,如图:

截屏2019-12-22下午3.13.42.png

4.点击下载后,据说会生成一个扩展名p8的文件,然鹅我点击下载之后,并没有生成文件,而是跳转了一个网页,如图:

截屏2019-12-22下午3.17.05.png

5.可这个文件必须要下载下来并且放到指定的路径中,否则一会输入命令行进行操作时,会当场报错,既然没自动生成,就手动导出吧。(ps:不知道是不是这里导致我后面验证ipa成功,但上传时却失败的原因)。操作如图:

在网页中右击,打开操作栏 ——> 选择将页面存储为,如图 :

截屏2019-12-22下午3.31.36.png

之后会弹出这样一个操作框,输入文件名——>选择格式——>存储——>不追加。如图:

截屏2019-12-22下午3.36.12.png

6.此时我们已经得到了一个放置在桌面的文件,如图:

截屏2019-12-22下午3.47.05.png

7.但这个文件要放到指定的路径中,否则是没有作用的,接下来就要放置文件了,这个文件要放置的路径如下:/Users/XXXXX/.private_keys/AuthKey_XXXXXXXXXX.p8,此时是没有.private_keys问价夹的,这个文件夹需要手动创建,打开终端,执行如下命令:

//前往根目录
$ cd ~
//在用户根目录下创建一个名叫.private_keys隐藏文件夹
$ mkdir .private_keys

如图:

截屏2019-12-22下午4.16.41.png

接着你可执行如下命令,查看文件夹是否创建了:

//查看根目录下所有的文件
$ ls -la

如图:

截屏2019-12-22下午4.26.11.png

当然你也可以在屏幕上command + shift + .(这是个点),以快捷键的方式显示所有隐藏文件,然后在用户根目录下进行寻找,如图:

截屏2019-12-22下午4.34.16.png

如果文件过多,可以执行如下命令:

//前往.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。

操作如图:

截屏2019-12-22下午5.05.03.png

在输出一堆东西后,返回了结果,这是因为我已经使用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帮助中了解更多信息。