如何使用Xcode 11从命令行上传到App Store?

Cœu*_*œur 17 xcode ios app-store-connect xcode11

以前,使用Xcode 10,我们曾altool用于上传到App Store:

ALTOOL="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool"
"$ALTOOL" --upload-app --file "$IPA_PATH" --username "$APP_STORE_USERNAME" --password @keychain:"Application Loader: $APP_STORE_USERNAME"
Run Code Online (Sandbox Code Playgroud)

但是使用Xcode 11时,“ Application Loader.app”不再存在,因为Xcode 11的一部分发生了变化

Xcode支持使用Organizer窗口或使用xcodebuild或xcrun altool从命令行上传应用程序。Xcode不再包含Application Loader。(29008875)

那么,我们现在如何从命令行上传到TestFlight或App Store?

Cœu*_*œur 34

使用Xcode 11作为命令行工具,要验证或上传ipa,请替换altoolxcrun altool

xcrun altool --validate-app --file "$IPA_PATH" --username "$APP_STORE_USERNAME" --password @keychain:"Application Loader: $APP_STORE_USERNAME"

xcrun altool --upload-app --file "$IPA_PATH" --username "$APP_STORE_USERNAME" --password @keychain:"Application Loader: $APP_STORE_USERNAME"
Run Code Online (Sandbox Code Playgroud)

在获得更多帮助xcrun altool --help

  • 为了选择要使用的XCode版本,您可能需要在命令行上运行一次sudo xcode-select -r,然后才能运行xcrun altool。您不必手动提供版本,只需该行即可。我从[github问题](https://github.com/electron/electron-notarize/issues/5)中学到了这一点 (4认同)
  • **密码**不是您的 Apple 帐户密码,而是来自 https://appleid.apple.com/account/manage 的一次性(应用程序)密码 (4认同)
  • 您可能还想创建一个API密钥->然后,您根本不需要用户名和密码,只需* AuthKey_ $ APIKEY.p8 *文件中的私钥 (2认同)

for*_*015 7

使用命令行工具,

xcrun altool --upload-app -f path -u username -p password
Run Code Online (Sandbox Code Playgroud)

如果您的Apple帐户使用“两次身份验证”,则您的密码将是错误的,您需要转到https://appleid.apple.com/account/manage "Security - Generate Password"来获取密码

如果您遇到其他错误,则可以添加--verbose打印详细信息错误日志,就像

xcrun altool --upload-app -f path -u username -p password --verbose
Run Code Online (Sandbox Code Playgroud)

并且,获得更多帮助 xcrun altool --help

  • 这对我有帮助,但该链接的页面现在有不同的格式。您需要单击“应用程序特定密码”并在那里创建一个并使用它。 (4认同)

Ser*_*afa 6

您现在还可以使用来自 Apple 的名为“ Transporter ”的新应用程序,它可以替代 Xcode 应用程序加载器。


bio*_*ker 5

至少从 Xcode 11 开始,作为导出工作流程的一部分,可以使用 xcodebuild 非常轻松且直接地完成此操作。只需创建一个 exportOptions.plist 文件,为“目标”键指定“上传”,为“方法”键指定“应用商店”。这是一个示例,但当然可以根据您的需求进行调整:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>compileBitcode</key>
        <true/>
        <key>destination</key>
        <string>upload</string>
        <key>method</key>
        <string>app-store</string>
        <key>provisioningProfiles</key>
        <dict>
                <key>YOUR_BUNDLE_ID</key>
                <string>YOUR_PROFILE_NAME</string>
        </dict>
        <key>signingCertificate</key>
        <string>YOUR_CERT_NAME</string>
        <key>signingStyle</key>
        <string>manual</string>
        <key>stripSwiftSymbols</key>
        <true/>
        <key>teamID</key>
        <string>YOUR_TEAM_ID</string>
        <key>thinning</key>
        <string>&lt;none&gt;</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

完成后,使用 xcodebuild exportArchive命令将存档上传到应用商店连接的命令非常简单:

    xcodebuild -exportArchive \
               -archivePath PATH_TO_APP_ARCHIVE \
               -exportPath OUTPUT_PATH \
               -exportOptionsPlist exportOptions.plist
Run Code Online (Sandbox Code Playgroud)

如果您想知道 PATH_TO_ARCHIVE 在哪里,请首先使用 xcodebuild归档命令,例如:

    xcodebuild -sdk iphoneos \
               -workspace myWorkspace.xcworkspace \
               -scheme myScheme \
               -configuration Release \
               -archivePath PATH_TO_ARCHIVE archive
Run Code Online (Sandbox Code Playgroud)

  • 我最近设置了这个,但现在收到“登录失败”的消息。我想我需要获得一个新的应用程序专用密码,但我一辈子都不记得你把密码放在哪里了...不是在`exportOptions.plist`...密码去哪里了? (3认同)