iOS App 研發的最後衝刺:內測與部署

當開發者歷經磨難、披荊斬棘,完成了一個iOS項目後,最後的臨門一腳就是應用的內測、部署。那麼,在這最後的射門動做中,都有哪些地方須要開發者注意?有哪些方式可以更好地幫助咱們進行iOS應用的發佈部署?ios

本文針對iOS App開發的最後階段來詳解如何在真機上進行調試,將App發送給其餘測試人員進行內測,以及內測完成後如何將App上傳至App Store進行應用審覈,針對蘋果帳號的類型、真機調試、打包與崩潰收集進行深度剖析。xcode

蘋果帳號的類型

蘋果開發者計劃分爲我的、公司、企業和教育開發者四個類型。我的開發者證書費用爲$99一年,該帳號在App Store銷售者只能顯示我的的ID。而且,我的帳號只能有一個開發者,100個蘋果的iOS設備UDID測試。
1.png
公司開發者費用爲$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

2.png

特別須要注意的是,其餘渠道提供的所謂的企業證書其實是與他人共用一張企業證書,蘋果會偵測到這種狀況,並進行封號處理。封號後,包括已經使用該證書安裝了的App都會沒法繼續使用。ide

這些開發者帳號的申請都須要一個重要的條件,那就是有一張支持Visa或MasterCard的信用卡。工具

真機調試

使用真機調試,必需要使用開發者證書,以及正確填寫App ID,配置好Provision Profile,具體流程以下:測試

  1. 安裝調試證書
  2. 填寫 App ID
  3. 根據 App ID 填寫 provision profile ,並下載安裝到 Xcode
  4. 真機調試運行

怎樣申請開發者證書?

須要下列幾步:
1.請求CSR文件網站

  • 打開鑰匙串訪問, 從證書頒發機構請求證書

3.png
4.png

  • 填寫電子郵件地址,經常使用名稱,勾選存儲到磁盤,最後保存CSR文件到指定位置
    5.pngui

  • 最後保存CSR文件到指定位置
    6.png編碼

2.建立調試證書

  • 選擇CSR文件
    7.png
  • 點擊Download下載,雙擊安裝到鑰匙串匙串
    8.png

3. 雙擊安裝

能夠看到鑰匙串中有了咱們剛安裝的證書,左側有個三角,點擊展開能夠看到證書私鑰,若是沒有私鑰,則證書是不可用的,通常這種狀況是你在開發者網站上下載了其餘Mac上製做的證書,能夠從這臺Mac導出證書安裝到本身的電腦上。

9.png

建立AppID

1. 填寫AppID Name
10.png
**2. 支持推送、Game Center等功能的話不能建立含有通配符*的AppID,因此這裏咱們選擇Explicit App ID
11.png
3. 勾選須要的服務,而後Continue**
12.png

添加設備

1. 填寫設備名稱、設備UDID
13.png
2. Register
14.png

注意:最多添加100臺設備

建立Provisioning Profile

15.png
16.png

  • iOS App Development:真機調試Profile(須要選擇iOS設備,只有包含的設備能夠真機調試)
  • App Store:上傳到AppStore商店Profile
  • In House:企業內發佈Profile(全部設備能夠安裝)
  • Ad Hoc:Ad Hoc Profile(須要選擇iOS設備,除了只有包含的設備能夠安裝外與AppStore、Inhouse版本基本沒有區別)

1. 選擇AppID
17.png
2. 選擇證書
18.png
3. 選擇設備(只有Development、AdHoc須要選擇設備)
19.png
4. 填寫Profile Name
20.png
5. 點擊Download下載,雙擊安裝到Xcode

XCode打包

Configurations

默認Configurations包含兩個配置,Debug、Release,能夠看到Build Setting裏好多配置都區分了Debug、Release,能夠根據不一樣的狀況配置不一樣的選項,最經常使用的就是根據真機調試、打包發佈,分別在Debug、Release選擇合適的證書、Profile。

21.png
我的認爲,如今的Xcode不用再Duplicate Release配置來創建專門打包AppStore或者Adhoc或其它的Configuration,由於感受並不會方便多少,只是省去了選擇證書,可是你仍是設置Archive選項。
22.png
通常來講,Adhoc、AppStore\Inhouse,兩者用的都是同一個證書,只是Profile不一樣而已,簡單的選擇一下Profile,是否是更省事一些呢。

指令集

先說一下iOS設備的指令集:

  • arm64:

iPhone 5s, iPhone 6, iPhone6 Plus;
iPad Air, iPad Air 2;
iPad Mini 2, iPad Mini 3;

  • armv7s:

iPhone 5, iPhone 5c;
iPad 4;

  • armv7:

iPhone 3GS, iPhone 4, iPhone 4S;
iPad, iPad 2, iPad 3, iPad Mini;

  • armv6:

iPhone, iPhone 3G;

23.png

  • Architectures
    該編譯選項指定了工程支持哪些指令集,若是支持的指令集數目有多個,就會編譯出包含多個指令集二進制包,形成最終編譯的包很大。

  • Valid Architectures
    該編譯項指定可能支持的指令集,該列表和Architectures列表的交集,將是Xcode最終生成二進制包所支持的指令集。

如上圖所示,Architectures 支持的指令集爲 armv七、arm6四、Valid Architectures 支持的指令集爲armv七、armv7s、arm64,這時只會生成一個 armv七、arm64 指令集的二進制包。

  • Build Active Architecture Only
    該編譯項用於設置是否只編譯當前使用的設備對應的arm指令集。一般狀況下,該編譯選項在Debug模式都設成YES,Release模式都設成NO。該選項起做用的條件有兩個,必須同時知足纔會起做用:

注意:許多用戶可能會發現本身的應用安裝不了,這時候能夠看看本身的App支持的指令集,遇到過幾個用戶的指令集只支持arm64,這樣的App在設備不是arm64的狀況下是安裝不了的。

Code Signing

24.png

上圖中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首先須要選擇ipa版本,導出App Store/AdHoc/企業版ipa,而後點擊Next。若是Xcode 沒有登陸企業開發者帳號,選擇導出企業版ipa的時候會提示添加企業開發者帳號到xcode。

選擇證書
25.png
這裏就是上面說的在工程選擇的證書、profile可能並非簽名用的,關鍵在這裏,這裏會顯示已經添加到Xcode的開發者帳號對應的證書列表,能夠選擇簽名用的證書。若是跟工程設置的證書一致,而且Profile匹配,則會根據工程配置的證書、Profile來簽名導出。若是跟工程配置的證書不一致,則會根據選擇的證書自動查找匹配的Profile來簽名導出ipa。
26.png
這裏會顯示導出的ipa用的是哪個證書、Profile簽名的,Profile旁邊那個箭頭並非選擇Profile,而後在Finder中顯示當前Profile。 因此導出的最後一步,儘可能確認一下簽名的證書、Profile是否是本身指定的。

內測分發ipa文件

內測分發ipa文件給測試人員主要有3種方法:

  1. 使用iTunes將iPa同步到手機中;
  2. 使用itms-services協議進行下載分發;
  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快速地進行內測分發。


本文整理自:【CSDN技術公開課】iOSApp研發的最後衝刺:內測與部署,做者紀承,演講PPT>>下載地址

相關文章
相關標籤/搜索