美文网首页iOS点点滴滴技术 学习iOS Developer
Xcode11取消了Application Loader后用al

Xcode11取消了Application Loader后用al

作者: revolution丶 | 来源:发表于2019-09-30 12:03 被阅读0次

    Xcode11 Application Loader altool 打包提审 authentication with the app store

    情景

    最近打包上传提审中发现一直卡在 authentication with the app store中,各种办法试了没什么效果后试试升级最新的Xcode11,结果不升级倒好,一升级发现苹果把Application Loader给删除了,除了代码的archive打包上传,另外给出的解决方案是用altool工具上传,于是记录下如何使用altool上传ipa包.

    解决问题

    1 首先看看你的电脑是否支持这个工具,在终端中输入
    $ xcrun altool
    
    如果系统反馈下图这样,那么你电脑是支持的,如果没有反馈请自行搜索如何安装altool~ 图1.反馈截图
    2 altool只是一个上传工具,而非打包工具,就跟Application Loader的定位是一样的,所以需要你用archive打包并导出(export)这个ipa包,放在桌面上.
    3 其实检查/上传的命令在图1中可以看到
    $ 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>}
    

    但当你憨憨的在命令行里面输入

    $ xcrun altool --validate-app -f 包的绝对路径 -t ios -u 你的苹果账号 -p 你账号对应的密码
    

    并回车发现,咦报错了,错误原因如下:

    "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.}"
    

    这个的大意就是说你的我们现在采用了新的验证方式,不是你输入的密码不对,而是你需要用上面命令中的--apiKey --apiIssuer ,其实你如果用过Application Loader就能想明白为什么非要用这两者了,因为Application Loader没法做二次验证所以,Application Loader需要的密码是你自己登陆账号创建的,而你登陆账号相当于经过了二次验证,同理altool本身是没法二次验证的,所以他需要你去创建一套密钥来验证你的身份,那么这个在哪里创建呢?答案是在app store connect 里面"用户和访问"->密钥->App Store Connect API,如下图所示


    图2,创建apiKey和apiIssuer的地方

    其中蓝色框体框柱的是秘钥ID,对应的文件就是apiKey文件,有几点需要注意

    • 生成时会让你选择访问权限,请尽量给与最高权限-管理
    • 这个文件只能下载一次,所以下载后请妥善保存.如果丢了那就只能删除重新生成一个.
    • 另外该文件是与红框内的apiIssuer所对应
    • 尽量不要更改文件名,否则后面在altool中使用时会比较麻烦
      OK,现在我们有了--apiKey 以及 --apiIssuer再次执行命令发现,又报错了
    ......a private key file with the name of 'AuthKey_<api_key>.p8':  './private_keys', '~/private_keys', '~/.private_keys', and '~/.appstoreconnect/private_keys'......
    

    这是啥意思呢,其实就是系统在根目录下找不到你的apiKey放哪了,所以这个时候就需要一件基础的linux命令,来把这个文件放到根目录下.

    4 根据提示,首先在根目录下创建对应名称的文件夹
    $ cd ~
    $ mk dir .private_keys
    #这个时候就在你的根目录下生产了一个名叫private_keys隐藏文件夹
    $ ls -la
    #使用这个命令你就可以看到你根目录下所有的文件,包括刚刚创建的.private_keys
    $ cd .private_keys/
    $ pwd
    #进入这个文件夹,并用pwd打印文件夹路径,记录这个路径后面有用
    

    接下来通过以下命令

    $ cd 文件夹
    

    来进入你存放apiKey所在的文件夹层级,

    $ mv    apiKey文件全面     .private_keys文件夹的绝对路径(就是上面让你打印那个)
    

    OK,到这一步就把你的文件放到了该放的地方

    5 执行命令
    $ xcrun altool --validate-app -f 包的绝对路径 -t ios -u 你的苹果账号 --apiKey 密钥的ID --apiIssuer Issuer ID
    
    然后等待,如果返回如下图所示 图3.验证命令反馈

    那就是通过了验证了,尤其是红色框体里的话.接下来执行上传命令

    $ xcrun altool --upload-app -f 包的绝对路径 -t ios -u 你的苹果账号 --apiKey 密钥的ID --apiIssuer Issuer ID
    

    执行完上传命令耐心等待后,如果没有什么error信息那就是上传成功了,这个时候去App Store Connect中完成你需要填写的信息就可以提审了.

    一点小tips:

    • altool这种上传方法最大好处是每次你失败后错误信息都会告诉你错哪了,所以每次看到错误信息可以翻译过来认真读下,相信会对你有所启示~
    • 如果你尝试了各种上传方法还是没有效果,最后试试用手机4G信号开热点给电脑共享.
    • 最后,如有错误,恳请斧正.

    相关文章

      网友评论

        本文标题:Xcode11取消了Application Loader后用al

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