钥匙串选项应该如何用于 altool?

How should the keychain option be used for altool?

我正在尝试将 @keychain 选项与 altool 中的 -p 开关结合使用,以便从钥匙串加载我的 iTunes Connect 密码:

altool --validate-app -f "${IPA}" -u "redacted" -p "@keychain:?????"

我想知道我需要在 @keychain: 之后输入什么。我尝试的所有操作(钥匙串文件的路径、钥匙串条目的名称、钥匙串条目中的用户名)都会产生以下错误:

*** Error: The specified item could not be found in the keychain.

altool 提供有关 -p 参数的以下信息:

-p, --password  Password. Required if username specified.  Password is read from stdin if one is not supplied.
                May use @keychain: or @env: prefixes followed by the keychain or environment variable lookup name.
                e.g. -p @env:SECRET which would use the value in the SECRET environment variable.

正确的用法是输入钥匙串项的名称(不是钥匙串本身的名称,也不是钥匙串项的 "Account" 字段)。

我的问题实际上与访问控制有关。我必须在 Keychain Access 中编辑钥匙串项目并调整访问控制设置以允许 altool 查看钥匙串项目。

对我有用的方法是使用 Application Loader 本身登录(检查 "Keep me logged in" 选项)并使用 [=15= 的钥匙串条目]应用程序加载器.

所以我的命令是这样的:

altool --validate-app -f APPLICATION.ipa -u my@apple.id -p @keychain:"Application Loader: my@apple.id"

先决条件:

  • 显然,您需要一个 Apple 开发者帐户。那是 AC_USERNAME.
  • 您需要该帐户的密码。如果您可以启用 two-factor 身份验证,则需要创建一个 app-specific 密码 (超出此答案的范围)。密码是 AC_PASSWORD.
  • 钥匙串项将需要一个通过 altool@keychain 参数引用的名称。我们称之为 ITEM_NAME.

在下面的说明中,将 AC_USERNAMEAC_PASSWORDITEM_NAME 替换为您需要的值。不要逐字键入这些名称。

现在:

  1. 在您的钥匙串中创建通用密码。
    • 您可以通过 Keychain Access.app 文件 > 新密码项... 来完成此操作。在 Keychain Item Name 中,输入您想要的 ITEM_NAME 名称,Account Name 是您的 AC_USERNAMEAC_PASSWORD 进入 密码 字段。
    • 或者你可以通过命令行来完成:security add-generic-password -a "AC_USERNAME" -w "AC_PASSWORD" -s "ITEM_NAME"
  2. altool 的参数中,您现在传递 -u AC_USERNAME -p "@keychain:ITEM_NAME" 以使其从钥匙串中获取密码。
  3. 第一次 运行 altool 时,您会看到一个安全确认对话框,询问您是否允许 altool 读取密码。输入您的钥匙串密码,然后单击 Always allow

要防止出现安全确认对话框,请单击 Always allow 或修改相应的钥匙串条目。这像这样工作:

  • 通过打开 shell 并键入 xcrun -find altool.
  • 找到 altool 的路径
  • 在使用 security add-generic-password 命令创建密码时使用此路径作为参数 -T <path> 或:
    • 打开Keychain Access.app
    • Select密码输入,select菜单File > Get Info(或按Cmd+I或点击图标)。
    • 在此对话框中,select Access Control 选项卡并按 + 按钮。文件 selection 对话框打开。
    • 打开 Finder 和 select 菜单 Go > Go to Folder… 并将路径粘贴到 altool(目录部分,没有 altool 本身,例如 /Applications/Xcode.app/Contents/Developer/usr/bin/) .
    • altool拖到Keychain Access的打开面板,然后按Add按钮。