Xcode11取消了Application Loader后用altool上傳ipa的方法

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

情景

最近打包上傳提審中發(fā)現(xiàn)一直卡在 authentication with the app store中,各種辦法試了沒什么效果后試試升級最新的Xcode11,結(jié)果不升級倒好,一升級發(fā)現(xiàn)蘋果把Application Loader給刪除了,除了代碼的archive打包上傳,另外給出的解決方案是用altool工具上傳,于是記錄下如何使用altool上傳ipa包.

解決問題

1 首先看看你的電腦是否支持這個工具,在終端中輸入
$ xcrun altool
如果系統(tǒng)反饋下圖這樣,那么你電腦是支持的,如果沒有反饋請自行搜索如何安裝altool~
圖1.反饋截圖
2 altool只是一個上傳工具,而非打包工具,就跟Application Loader的定位是一樣的,所以需要你用archive打包并導(dǎo)出(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>}

但當(dāng)你憨憨的在命令行里面輸入

$ xcrun altool --validate-app -f 包的絕對路徑 -t ios -u 你的蘋果賬號 -p 你賬號對應(yīng)的密碼

并回車發(fā)現(xiàn),咦報錯了,錯誤原因如下:

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

這個的大意就是說你的我們現(xiàn)在采用了新的驗證方式,不是你輸入的密碼不對,而是你需要用上面命令中的--apiKey --apiIssuer ,其實你如果用過Application Loader就能想明白為什么非要用這兩者了,因為Application Loader沒法做二次驗證所以,Application Loader需要的密碼是你自己登陸賬號創(chuàng)建的,而你登陸賬號相當(dāng)于經(jīng)過了二次驗證,同理altool本身是沒法二次驗證的,所以他需要你去創(chuàng)建一套密鑰來驗證你的身份,那么這個在哪里創(chuàng)建呢?答案是在app store connect 里面"用戶和訪問"->密鑰->App Store Connect API,如下圖所示


圖2,創(chuàng)建apiKey和apiIssuer的地方

其中藍(lán)色框體框柱的是秘鑰ID,對應(yīng)的文件就是apiKey文件,有幾點需要注意

  • 生成時會讓你選擇訪問權(quán)限,請盡量給與最高權(quán)限-管理
  • 這個文件只能下載一次,所以下載后請妥善保存.如果丟了那就只能刪除重新生成一個.
  • 另外該文件是與紅框內(nèi)的apiIssuer所對應(yīng)
  • 盡量不要更改文件名,否則后面在altool中使用時會比較麻煩
    OK,現(xiàn)在我們有了--apiKey 以及 --apiIssuer再次執(zhí)行命令發(fā)現(xiàn),又報錯了
......a private key file with the name of 'AuthKey_<api_key>.p8':  './private_keys', '~/private_keys', '~/.private_keys', and '~/.appstoreconnect/private_keys'......

這是啥意思呢,其實就是系統(tǒng)在根目錄下找不到你的apiKey放哪了,所以這個時候就需要一件基礎(chǔ)的linux命令,來把這個文件放到根目錄下.

4 根據(jù)提示,首先在根目錄下創(chuàng)建對應(yīng)名稱的文件夾
$ cd ~
$ mk dir .private_keys
#這個時候就在你的根目錄下生產(chǎn)了一個名叫private_keys隱藏文件夾
$ ls -la
#使用這個命令你就可以看到你根目錄下所有的文件,包括剛剛創(chuàng)建的.private_keys
$ cd .private_keys/
$ pwd
#進(jìn)入這個文件夾,并用pwd打印文件夾路徑,記錄這個路徑后面有用

接下來通過以下命令

$ cd 文件夾

來進(jìn)入你存放apiKey所在的文件夾層級,

$ mv    apiKey文件全面     .private_keys文件夾的絕對路徑(就是上面讓你打印那個)

OK,到這一步就把你的文件放到了該放的地方

5 執(zhí)行命令
$ xcrun altool --validate-app -f 包的絕對路徑 -t ios -u 你的蘋果賬號 --apiKey 密鑰的ID --apiIssuer Issuer ID

然后等待,如果返回如下圖所示
圖3.驗證命令反饋

那就是通過了驗證了,尤其是紅色框體里的話.接下來執(zhí)行上傳命令

$ xcrun altool --upload-app -f 包的絕對路徑 -t ios -u 你的蘋果賬號 --apiKey 密鑰的ID --apiIssuer Issuer ID

執(zhí)行完上傳命令耐心等待后,如果沒有什么error信息那就是上傳成功了,這個時候去App Store Connect中完成你需要填寫的信息就可以提審了.

一點小tips:

  • altool這種上傳方法最大好處是每次你失敗后錯誤信息都會告訴你錯哪了,所以每次看到錯誤信息可以翻譯過來認(rèn)真讀下,相信會對你有所啟示~
  • 如果你嘗試了各種上傳方法還是沒有效果,最后試試用手機(jī)4G信號開熱點給電腦共享.
  • 最后,如有錯誤,懇請斧正.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容