我目前正在尝试使用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_
./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中的错误还是我缺少了什么?
答案 0 :(得分:2)
这可能是一个错误。
上传应用程序时,altool
似乎在幕后调用iTMSTransporter
进行实际的上传。
后者会在运行前更改当前目录,因此当它在当前目录中查找./private_keys/AuthKey_MYAPIKEY.p8
时,它将检查错误的位置。
请参见cd
中的/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/itms/bin/iTMSTransporter
。
我认为altool
在验证应用程序时不会调用iTMSTransporter
。