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

Leo*_*die 6 xcode application-loader ipa

我目前正在尝试使用 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"
Run Code Online (Sandbox Code Playgroud)

我的私钥(p8)位于

./private_keys/AuthKey_MYAPIKEY.p8

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

 ./private_keys
 ~/private_keys
 ~/.private_keys
 ~/.appstoreconnect/private_keys
Run Code Online (Sandbox Code Playgroud)

考虑到 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)
Run Code Online (Sandbox Code Playgroud)

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

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

这是 altool 中的错误还是我遗漏了什么?

Bli*_*air 5

在 GitHub actions 中,我只是将 api 密钥放入$RUNNER_TEMP. 然后在运行时xcrun altool我这样做:

API_PRIVATE_KEYS_DIR=$RUNNER_TEMP xcrun altool
Run Code Online (Sandbox Code Playgroud)


Svy*_*ina 2

这可能是一个错误。

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

见于.cd/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/itms/bin/iTMSTransporter

我想验证应用程序时altool不会调用。iTMSTransporter

  • 我已设法向 Apple 支持确认这是一个错误。目前 Apple 建议使用其他 3 个记录文件夹。 (2认同)