那些年IOS AppStore更新App所遇到的坑
1,實驗環境:MacOS Heigh Sierra 10.13.5,Xcode9.4.1
2,參考文獻:
①https://www.jianshu.com/p/860fdd8860cc
②https://www.jianshu.com/p/a391c1aad96b
③https://blog.csdn.net/buildsetting/article/details/50685272
④https://blog.csdn.net/shihuboke/article/details/78809692
⑤https://www.jianshu.com/p/0d40830eea72
⑥https://blog.csdn.net/whjay520/article/details/71158757
⑦https://www.cnblogs.com/lixipeng/p/6249802.html
受朋友之託,幫朋友更新一個IOS App到AppStore,因為之前沒有往AppStore釋出過App,所以這麼一折騰2天時間過去了,其中各種漫長等待,各種更新,各種證書。。。。最後總算上傳上去了,特此文章,記錄一下,望後來者能有所啟發。
由於我是幫朋友上傳app更新,所以生成證書,在AppStrore新增App資訊等流程已經走過了,注意:是用別人的AppId上傳的,而且有一點需要注意,
主要的核心流程請參考參考文獻⑦,本文所講訴的釋出方式主要流程如下:
一、https://appstoreconnect.apple.com/login 登陸appstoreconnect,點選如下藍色的“+”號。
新增新版本,新增完成之後剩下的工作就是使用Xcode將ipa包上傳appstoreconnect了,上傳之後就可以在appstoreconnect頁面的build標籤下看到上傳的新版本,然後選擇該版本釋出稽核即可。
二、配置開發環境,構建新版本的release版本以供上傳。
1、這一步比較複雜,主要是IOS各種證書,容易搞暈,具體來講,app構建上傳一般涉及到幾個證書相關檔案。
①釋出者證書 Certificates(有Development表示測試版本)
證書是對電腦開發資格的認證,每個開發者帳號有一套,分為兩種:
1) Developer Certification(開發證書)
安裝在電腦上提供許可權:開發人員通過裝置進行真機測試。
可以生成副本供多臺電腦安裝;
2) Distribution Certification(釋出證書)
安裝在電腦上提供釋出iOS程式的許可權:開發人員可以製做測試版和釋出版的程式。
不可生成副本,僅有配置該證書的電腦才可使用;(副本製做介紹在下面Keychain中介紹)
②Provisioning Profiles(授權檔案,有Development表示測試版本)
授權檔案是對裝置如iPod Touch、iPad、iPhone的授權,檔案內記錄的是裝置的UDID和程式的App Id,即使被授權的裝置可以安裝或除錯Bundle identifier與授權檔案中記錄的App Id對應的程式。
開發者帳號在建立授權檔案時候會選擇App Id,(開發者帳號下App Id中新增,單選)和UDID(開發者帳號下Devices中新增最多100個,多選)。
授權檔案分為兩種,對應相應的證書使用:
1) Developer Provisioning Profile(開發授權檔案)
在裝有開發證書或副本的電腦上使用,開發人員選擇該授權檔案通過電腦將程式安裝到授權檔案記錄的裝置中,即可進行真機測試。
注意:確保電腦有許可權真機除錯,即安裝了開發證書或副本;在開發工具中程式的Bundle identifier和選中使用的授權檔案的App Id要一致;連線除錯的裝置的UDID在選中的授權檔案中有記錄。
2) Distribution Provisioning Profile(釋出授權檔案)
在裝有釋出證書的電腦上(即配置證書的電腦,只有一臺)製做測試版和釋出版的程式。
釋出版就是釋出到App Store上的程式檔案,開發者帳號建立授權檔案時選擇store選項,選擇App Id,無需選擇UDID;
測試版就是在釋出之前交給測試人員可同步到裝置上的程式檔案,開發者帳號建立授權檔案時選擇AdHoc,選擇App Id和UDID;只有選中的UDID對應的裝置才可能安裝上通過該授權檔案製做的程式。
2、以上的證書可以在https://developer.apple.com/account/ios/profile/裡面看到,下載到Mac上,雙擊下載來的Certificates(。cer字尾)就會把證書安裝到key chain中,雙擊下載下來的Provisioning Profiles檔案(mobileprovision字尾檔案),雙擊之後沒有任何介面響應,但是Xcode裡面的General->Signing會有相關選項。
3、還有一點需要注意的,就是Xcode需要先登入AppId的賬號,具體操作為:Xcode->Preference->Account,登入之後顯示如下:
這表明登入成功!!!
4、然後就是專案的相關配置,介面如下:
這裡需要注意以下幾點:
①Project和Target的區別
project就是一個專案,或者說工程,一個project可以對應多個target(你看看上面的圖)
targets之間完全沒有關係。但target和project有關係,target的setting會從project settings中繼承一部分(看圖2)
我們選擇target的General下面的資訊,首先Version版本號要增加,然後Signing下面的Automatially...選項取消選擇(自動簽名選項,不取消的話可能會有問題,這裡我是取消了,然後手動選擇簽名即可),然後選擇Team,選擇釋出證書即可。然後在target的Build Setting裡面也改一下Signing相關選項(好像是修改了Gerenal 之後這裡會自動更新???)。
5、下一步選擇編譯版本,Product->Scheme->Edit Scheme ->Build Configuration 選擇Release即可。
6、這時候就可以編譯打包了,具體過程如下:
Product->Clean
Product->Build
Product->Archive
最後來到這個介面:
方式一:選擇Upload to App Store上傳即可(這一步上傳可以使用另外一種方式上傳,就是在上圖的介面選擇Export匯出ipa檔案,然後選擇Xcode->Open Develop Tool->Application Loader這個工具上傳,不過我沒有上傳成功,原因未知)。
注意,這一步可能會出現各種問題!!!最可能的是一直顯示Authenticating with the App Store..好幾個小時一直不動,也不報錯,這時候按照參考文獻https://blog.csdn.net/whjay520/article/details/71158757,進行如下操作:
cd ~
mv .itmstransporter/ .old_itmstransporter/
"/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/itms/bin/iTMSTransporter"
執行半個小時以上即可。然後全部退出上傳工具和xcode,重新上傳,大概傳了10多分鐘,就可以看到以下成功的介面:
如果執行了上述命令還是卡在Authenticating with the App Store,參考文獻:https://www.jianshu.com/p/ed6f035aceef,
可能是網路原因,手機4G網,開熱點,10分鐘立馬上傳成功!!!親測有效!!!
方式二:
xcode 》Open Developer Tool 》Application Loader登陸
Please sign in with an app-specific password. You can create one at appleid.apple.com
登陸之後新增密碼即可用該密碼登陸
https://appleid.apple.com/#!&page=signin(手機驗證),登入之後生產登入密碼Application Loader即可用該密碼登入appid,然後choose ipa檔案上傳即可
3、上傳成功,登入Appstore connect,我們第一步的時候已經添加了版本資訊,這時候,我們開啟介面
點選build的“+”號
選擇剛剛上傳的版本即可(上傳之後可能得等一段時間大概十分鐘才能選,系統需要處理一下,這裡得吐槽一下蘋果的效率了。。。。。),選擇完提交後面按要求來就行~~~~~
這裡之前有個小問題,就是Xcode版本編譯的ipa好像上傳有問題,具體參考:
https://help.apple.com/xcode/mac/current/#/devf16aefe3b
解決方案:升級xcode8到xcode9,這裡我在appstore 升級到了9.4.1 大概5G,花了超過9 hours,而且升級該版本的xcode還需要先升級MacOs到Heigh Sierra 10.13.5以上。。。。。