iOS 发布

作者: bianruifeng | 来源:发表于2019-12-11 11:42 被阅读0次

    公司使用Hbuilder 跨平台开发
    好久没有做app上传了,发现世道变了。
    Application Loader 没了,没了,竟然没了。。。

    从Xcode11开始,Application Loader不再集成在Xcode中,需要使用xcodebuild或者xcrun altool命令上传应用。

    直接干:

    使用 xcrun altool
    终端中输入xcrun altool

    userName:~ userName$ xcrun altool
    Copyright (c) 2009-2019, Apple Inc. Version 4.00.1181
    
    Usage: altool --validate-app -f <file> -t <platform> -u <username> {[-p <password>] | --apiKey <api_key> --apiIssuer <issuer_id>}
           altool --upload-app -f <file> -t <platform> -u <username> {[-p <password>] | --apiKey <api_key> --apiIssuer <issuer_id>}
           altool --notarize-app -f <file> --primary-bundle-id <bundle_id> -u <username> {[-p <password>] | --apiKey <api_key> --apiIssuer <issuer_id>} [--asc-provider <provider_shortname>]
           altool --notarization-info <uuid> -u <username> {[-p <password>] | --apiKey <api_key> --apiIssuer <issuer_id>}
           altool --notarization-history <page> -u <username> {[-p <password>] | --apiKey <api_key> --apiIssuer <issuer_id>} [--asc-provider <provider_shortname>]
           altool --list-apps -u <username> {[-p <password>] | --apiKey <api_key> --apiIssuer <issuer_id>}
           altool --store-password-in-keychain-item <name_for_keychain_item> -u <username> -p <password>
    
    Authentication: Most commands require authorization.
                    There are two methods available: user name with password, and apiKey with apiIssuer.
    
                    -u, --username <username> Username. Required to connect for validation, upload, and notarization.
                    -p, --password <password> Password. Required if username specified and apiKey/apiIssuer are not.
                                              If this argument is not supplied on the command line, it will be read from stdin.
                                              Alternatively to entering <password> in plaintext, it may also be specified using a '@keychain:'
                                              or '@env:' prefix followed by a keychain password item name or environment variable name.
                                              Example: '-p @keychain:<name>' uses the password stored in the keychain password item named <name>.
                                                                             You can create and update keychain items with the
                                                                             --store-password-in-keychain-item command.
                                              Example: '-p @env:<variable>'  uses the value in the environment variable named <variable>
    
                    --apiKey <api_key>        apiKey. Required for JWT authentication while using validation, upload, and notarization.
                                              This option will search the following directories in sequence for a private key file
                                              with the name of 'AuthKey_<api_key>.p8':  './private_keys', '~/private_keys', '~/.private_keys',
                                              and '~/.appstoreconnect/private_keys'.
                    --apiIssuer <issuer_id>   Issuer ID. Required if --apiKey is specified.
    
     -f, --file <file>                   <file> specifies the path to the file to process.
     -t, --type {osx | ios | appletvos}  Specify the platform of the file.
    
         --primary-bundle-id <bundle_id> Used with --notarize-app to uniquely identify a package.
    
         --asc-provider <provider_shortname> Required with --notarize-app and --notarization-history when a user account is associated with multiple
                                             providers.
    
     -v, --validate-app                  Validates an app archive for the App Store. Authentication and -f are required.
         --upload-app                    Uploads the given app archive to the App Store. Authentication and -f are required.
         --list-apps                     Display all apps associated with your account(s).
    
         --notarize-app                  Uploads the given app package, dmg or zip file for notarization. Authentication, -f,
                                         and --primary-bundle-id are required. --asc-provider is required for an account associated with multiple providers.
                                         If successful, the UUID associated with the upload is returned.
    
         --notarization-info <uuid>      Returns the status and log file URL of a package previously uploaded for notarization with the specified <uuid>.
                                         Authentication is required. The log file can be retrieved with 'curl <log_file_url>'.
    
         --notarization-history <page>   Returns a list of all uploads submitted for notarization. <page> specifies a range of entries where 0
                                         returns the most recent number of entries. A new page value will be returned which can be used as the
                                         <page> value to the next use of --notarization-history and so forth until no more items are returned.
                                         Authentication is required. --asc-provider is required for an account associated with multiple providers.
    
         --store-password-in-keychain-item <name_for_keychain_item> -u <username> -p <password>
                                         Stores the password <password> in the keychain item named <name_for_keychain_item> associated with the account <username>.
                                         If an item with that name and account already exists in the keychain, its password will be updated. Otherwise a new item
                                         is created with that name. You can use this keychain item with the -p option to mask your password with other commands.
                                         Example: altool --store-password-in-keychain-item MY_SECRET -u jappleseed@apple.com -p "MyP@ssw0rd!@78"
                                                  altool --notarize-app -u jappleseed@apple.com -p @keychain:MY_SECRET [...]
    
         --output-format {xml | normal}  Specifies how the output is formatted. 'xml' displays the output in a structured format; 'normal' displays in
                                         an unstructured format (default).
    
         --verbose                       Enable logging output.
    
     -h, --help                          Display this output.
    userName:~ userName $ 
    
    

    1、先验证ipa

    xcrun altool --validate-app -f 包体绝对路径.ipa -t iOS -u 用户名 -p 密码
    

    2、再上传ipa

    xcrun altool --upload-app -f 包体绝对路径.ipa -t iOS -u 用户名 -p 密码
    

    验证成功:

    No errors validating archive at '/Users/***/Desktop/***.ipa'
    

    上传成功:

    No errors uploading '/Users/***/Desktop/***.ipa'
    

    验证出错:

    *** Error: Unable to validate archive '/Users/jingyin/Desktop/***.ipa': ( "Error Domain=ITunesSoftwareServiceErrorDomain Code=-22020 "We are unable to create an authentication session." UserInfo={NSLocalizedDescription=We are unable to create an authentication session., NSLocalizedFailureReason=Unable to validate your application.}"

    因为我也天真的输入了,开发者账号的密码。
    这里的密码需要使用动态密码。而不是原来账号的密码。需要先登录账号,获取到动态密码,再用在此处。官方文档

    相关文章

      网友评论

        本文标题:iOS 发布

        本文链接:https://www.haomeiwen.com/subject/helogctx.html