相信你在出現這個問題之前已經查閱過很多資料來實現如何使用命令行上傳ipa到app store或者TestFlight,無需多說,很多博客都會告訴你執行兩條命令就可以了,一條驗證,一條上傳,如下:
xcrun altool --validate-app -f your.ipa -t ios --apiKey XXX --apiIssuer XXX --verbose 這是驗證ipa是否有效
xcrun altool --upload-app -f your.pia -t ios --apiKey XXX --apiIssuer XXX --verbose 這是上傳ipa到應用商店
但是我在驗證ipa的時候,就一直報錯,如下
查閱了很多資料,都說要將自動簽名管理的勾去掉,然后配置相應的provisioning profile 和簽名證書類型,比如如下:
因為我原來的工程配置就是打開了automatically manage signing的,會自動下載和更新provisoning prifile,他的辦法是叫我改成手動配置proviosion profile,可是我要兼容原來的自動配置的,況且,我不是ios開發,我是配置管理員,是命令行打包人員,讓開發人員給我兩份配置文件,明顯是不合理的,還有我配置了一遍,各種問題,連編譯都失敗了,xcode配置了automatically manage sigining后,打包可以上傳到app store,說明最后的上傳和這個配置不是完全相關的,所以去掉automatically manage signing 對我來說是不通的,應該有更加好的辦法。
分析:
看上面的截圖,我們看到Automatically manage signing 下面有一行“xcode will create and update profiles,app IDs, and certificates”,那就是說打包的時候只要也做到自動更新就好了,然而我的打包命令如下:
mkdir arch
archive_path=arch/${app_name}.xcarchive
workspace_name=TVAssistant
xcodebuild clean -workspace ${workspace_name}.xcworkspace -scheme ${app_name} -configuration $ios_type #clean
xcodebuild archive -workspace ${workspace_name}.xcworkspace -scheme ${app_name} -archivePath $archive_path -configuration $ios_type #archive
plist_file=ExportOptions.plist
xcodebuild -exportArchive -archivePath $archive_path -exportPath arch/target_ipa -exportOptionsPlist $plist_file -allowProvisioningUpdates #導出ipa
上面的幾條命令執行了clean --》archieve app ---》export ipa的過程,重點是在最后的export ipa的過程:
(1)如果你的ExportOptions.plist不對,還是會出現A Distribution Provisioning profile should be used when submitting apps to the App Store的報錯,所以ExportOptions.plist一定要正確
我的ExportOptions.plist(重點是method的值,不同環境需要修改成不同的值,上應用商店要修改成app-store),如下
(2)如果你沒有使用-allowProvisioningUpdates會報 “No profiles for **** was found”,如下:
所以完整的導入ipa命令一定要使用正確的ExportOptions.plist和-allowProvisioningUpdates允許跟新provisoning profiles
xcodebuild -exportArchive -archivePath $archive_path -exportPath arch/target_ipa -exportOptionsPlist $plist_file -allowProvisioningUpdates
然后再執行驗證ipa就可以驗證成功了!
接下來就是上傳了!!!
關於如何在app store上得到apikey 和api user id,如下:
-
在首頁上,請先點按“用戶和訪問”,然后再點按“密鑰”。
-
請點按“添加”按鈕(+)。
-
請輸入該密鑰的名稱。該名稱僅供您參考,不屬於密鑰本身。
-
在“訪問”一欄中,選擇職能權限來決定該 API 用於何處。API 密鑰適用於所有 App——無法限制 API 密鑰對 App 的訪問權限。
-
請點按“生成”。下載 API 密鑰
-
API 密鑰為私有密鑰且只能下載一次。下載密鑰后,將其存儲在安全的地方。如果密鑰丟失或損壞,請謹記立即將其撤銷。
-
下載以后存在你本地的用戶路徑下的private_keys文件夾下,即~/private_keys/ 參考:https://blog.csdn.net/weixin_30609287/article/details/97750499