當開發者歷經磨難、披荊斬棘,完成了一個iOS項目後,最後的臨門一腳就是應用的內測、部署。那麼,在這最後的射門動做中,都有哪些地方須要開發者注意?有哪些方式可以更好地幫助咱們進行iOS應用的發佈部署?ios
本文針對iOS App開發的最後階段來詳解如何在真機上進行調試,將App發送給其餘測試人員進行內測,以及內測完成後如何將App上傳至App Store進行應用審覈,針對蘋果帳號的類型、真機調試、打包與崩潰收集進行深度剖析。xcode
蘋果開發者計劃分爲我的、公司、企業和教育開發者四個類型。我的開發者證書費用爲$99一年,該帳號在App Store銷售者只能顯示我的的ID。而且,我的帳號只能有一個開發者,100個蘋果的iOS設備UDID測試。
公司開發者費用爲$99一年,該帳號在App Store銷售者能夠顯示相似Studios,或者自定義的團隊名稱。公司帳號能夠容許多個開發者協做開發,比我的多一些賬號管理的設置,能夠設置多個Apple ID,分4種管理級別權限,100個蘋果的iOS設備UDID測試。可是,申請時須要填寫公司的鄧白氏編碼(D-U-N-S),D-U-N-S鄧白氏碼能夠在 蘋果官方網站免費申請。服務器
企業開發者帳號費用爲$299一年, 該帳號開發應用不能發佈到App Store,只能企業內部應用,蘋果的iOS設備UDID數量不限制。企業帳號適合不但願上線App Store,可是須要企業內部,好比1000人的iOS設備都部署。app
特別須要注意的是,其餘渠道提供的所謂的企業證書其實是與他人共用一張企業證書,蘋果會偵測到這種狀況,並進行封號處理。封號後,包括已經使用該證書安裝了的App都會沒法繼續使用。ide
這些開發者帳號的申請都須要一個重要的條件,那就是有一張支持Visa或MasterCard的信用卡。工具
使用真機調試,必需要使用開發者證書,以及正確填寫App ID,配置好Provision Profile,具體流程以下:測試
須要下列幾步:
1.請求CSR文件網站
填寫電子郵件地址,經常使用名稱,勾選存儲到磁盤,最後保存CSR文件到指定位置
ui
最後保存CSR文件到指定位置
編碼
2.建立調試證書
3. 雙擊安裝
能夠看到鑰匙串中有了咱們剛安裝的證書,左側有個三角,點擊展開能夠看到證書私鑰,若是沒有私鑰,則證書是不可用的,通常這種狀況是你在開發者網站上下載了其餘Mac上製做的證書,能夠從這臺Mac導出證書安裝到本身的電腦上。
1. 填寫AppID Name
**2. 支持推送、Game Center等功能的話不能建立含有通配符*的AppID,因此這裏咱們選擇Explicit App ID
3. 勾選須要的服務,而後Continue**
1. 填寫設備名稱、設備UDID
2. Register
注意:最多添加100臺設備
1. 選擇AppID
2. 選擇證書
3. 選擇設備(只有Development、AdHoc須要選擇設備)
4. 填寫Profile Name
5. 點擊Download下載,雙擊安裝到Xcode
默認Configurations包含兩個配置,Debug、Release,能夠看到Build Setting裏好多配置都區分了Debug、Release,能夠根據不一樣的狀況配置不一樣的選項,最經常使用的就是根據真機調試、打包發佈,分別在Debug、Release選擇合適的證書、Profile。
我的認爲,如今的Xcode不用再Duplicate Release配置來創建專門打包AppStore或者Adhoc或其它的Configuration,由於感受並不會方便多少,只是省去了選擇證書,可是你仍是設置Archive選項。
通常來講,Adhoc、AppStore\Inhouse,兩者用的都是同一個證書,只是Profile不一樣而已,簡單的選擇一下Profile,是否是更省事一些呢。
先說一下iOS設備的指令集:
iPhone 5s, iPhone 6, iPhone6 Plus;
iPad Air, iPad Air 2;
iPad Mini 2, iPad Mini 3;
iPhone 5, iPhone 5c;
iPad 4;
iPhone 3GS, iPhone 4, iPhone 4S;
iPad, iPad 2, iPad 3, iPad Mini;
iPhone, iPhone 3G;
Architectures
該編譯選項指定了工程支持哪些指令集,若是支持的指令集數目有多個,就會編譯出包含多個指令集二進制包,形成最終編譯的包很大。
Valid Architectures
該編譯項指定可能支持的指令集,該列表和Architectures列表的交集,將是Xcode最終生成二進制包所支持的指令集。
如上圖所示,Architectures 支持的指令集爲 armv七、arm6四、Valid Architectures 支持的指令集爲armv七、armv7s、arm64,這時只會生成一個 armv七、arm64 指令集的二進制包。
注意:許多用戶可能會發現本身的應用安裝不了,這時候能夠看看本身的App支持的指令集,遇到過幾個用戶的指令集只支持arm64,這樣的App在設備不是arm64的狀況下是安裝不了的。
上圖中Code Signing Identity包含的Debug和Release兩項,其中,Debug指選擇真機調試證書,Release指選擇發佈證書(AdHoc、AppStore/Inhouse打包都使用發佈證書)。而在 Provisioning Profile中,不管真機調試,仍是發佈App,選擇的Profile的App ID要與項目工程的BundleId匹配。
注意:Provisioning Profile的Release這裏選擇的Profile,並不必定就是簽名ipa用的Profile,後面會講到。
導出ipa首先須要選擇ipa版本,導出App Store/AdHoc/企業版ipa,而後點擊Next。若是Xcode 沒有登陸企業開發者帳號,選擇導出企業版ipa的時候會提示添加企業開發者帳號到xcode。
選擇證書
這裏就是上面說的在工程選擇的證書、profile可能並非簽名用的,關鍵在這裏,這裏會顯示已經添加到Xcode的開發者帳號對應的證書列表,能夠選擇簽名用的證書。若是跟工程設置的證書一致,而且Profile匹配,則會根據工程配置的證書、Profile來簽名導出。若是跟工程配置的證書不一致,則會根據選擇的證書自動查找匹配的Profile來簽名導出ipa。
這裏會顯示導出的ipa用的是哪個證書、Profile簽名的,Profile旁邊那個箭頭並非選擇Profile,而後在Finder中顯示當前Profile。 因此導出的最後一步,儘可能確認一下簽名的證書、Profile是否是本身指定的。
內測分發ipa文件給測試人員主要有3種方法:
請注意,不管使用何種形式分發,內測的人數限制,以及App的UDID限制始終是存在的。若是想新增長測試人員,開發者仍然須要將UDID寫入Provision Profile,從新生成ipa文件進行分發。
使用iTunes進行內測分發
使用iTunes進行分發比較麻煩,須要測試用戶使用數據線鏈接裝有iTunes的電腦上,先將ipa文件添加到iTunes,再將iTunes的App同步到手機上。因爲國內用戶對iTunes熟悉程度不高,故不推薦你們使用這種方式進行內測分發。
使用itms-services協議進行下載分發
相比iTunes的分發方式,使用itms-service 分發的最大好處是測試用戶無需使用數據線,只需打開Safari中訪問包含itms-service鏈接的頁面,單擊鏈接後便可下載IPA文件。
itms-services的原理是itms-services指向一個plist文件,這個plist文件包含了ipa文件下載的地址,iOS設備的Safari會自動將plist中指定的ipa文件下載安裝到本地。
itms-services的麻煩之處就是開發者須要本身搭建一個服務器,以後蘋果在iOS 7.1 之後安裝ipa,寫入ipa地址的plist文件的存放地址必須是一個https的地址.
itms的結構參考以下
<a href="itms-services://?action=download-manifest&url=https://xxx/test.plist">安裝IOS BetaV1.0 </a>
plist 的結構參考以下
<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"><dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string><![CDATA[http://fir.im/xxxxxx]]></string> </dict> <dict> <key>kind</key> <string>display-image</string> <key>needs-shine</key> <integer>0</integer> <key>url</key> <string><![CDATA[http://fir.im/xxx]]></string> </dict> <dict> <key>kind</key> <string>full-size-image</string> <key>needs-shine</key> <true/> <key>url</key> <string><![CDATA[http://fir.im/xxx]]></string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>im.fir</string> <key>bundle-version</key> <string><![CDATA[1.3.0]]></string> <key>kind</key> <string>software</string> <key>title</key> <string><![CDATA[Fir plist Demo]]></string> </dict> </dict> </array> </dict></plist>
咱們能夠看到,雖說用戶比較方便,但對開發者而言須要寫不少東西,還得搭建服務器,上OpenSSL等,比較麻煩。
使用第三方工具進行內測分發
爲了不開發者使用itms-services而帶來的額外工做量,可使用第三方工具如 fir.im ,將ipa快速地進行內測分發。