使用api密钥时的Apple Application Loader altool问题

问题描述

我目前正在尝试使用ALTool作为构建脚本的一部分将我的应用程序IPA上载到App Store Connect。 这些是我正在使用的命令:

xcrun altool --validate-app -f my-ipa-file.ipa -t ios --apiKey "MYAPIKEY" --apiIssuer "MYISSUERID"
xcrun altool --upload-app -f my-ipa-file.ipa -t ios --apiKey "MYAPIKEY" --apiIssuer "MYISSUERID"

我的私钥(p8)位于

./ private_keys / AuthKey_MYAPIKEY.p8

根据altool --help命令,该工具将在以下目录中(按顺序)查找名为AuthKey_ .p8的p8文件:

 ./private_keys
 ~/private_keys
 ~/.private_keys
 ~/.appstoreconnect/private_keys

考虑到p8文件在该列表的第一个文件夹中,这应该可以工作。 对于--validate-app调用,它确实有效。进行了对App Store Connect的调用,应用程序进行了验证,并且如果App Store Connect中有任何错误,它们将按预期返回。

但是,由于某些原因,--upload-app命令总是返回相同的错误:

2020-09-01 14:24:40.934 altool[28265:119010] * Error: Error uploading 'my-ipa-file.ipa'.
2020-09-01 14:24:40.934 altool[28265:119010] * Error: code -18000 (Could not locate the private key file: AuthKey_MYAPIKEY.p8)

出于某种原因,似乎--upload-app无法正确加载./private_keys/中的p8文件,而--validate-app却可以正确加载。

将p8文件放在其他3个文件夹之一中(〜/ private_keys等)确实可以作为临时解决方法进行验证和上传。但是由于我的构建脚本如何将文件注入到构建过程中,因此我更喜欢使用./private_keys。

这是altool中的错误还是我缺少了什么?

解决方法

这可能是一个错误。

上传应用程序时,altool似乎在幕后调用iTMSTransporter进行实际的上传。 后者会在运行前更改当前目录,因此当它在当前目录中查找./private_keys/AuthKey_MYAPIKEY.p8时,它将检查错误的位置。

请参见cd中的/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/itms/bin/iTMSTransporter

我认为altool在验证应用程序时不会调用iTMSTransporter

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...