一、概述
(1)iOS開發中,應用程序打包 = ipa = 安裝在手機上。(注意,並不是所有的ipa都可以隨意安裝)
(2)如果想讓用戶可以安裝ipa,必須在打包程序的時候說清楚 哪一個應用程序可以安裝到哪一台設備上。
(3)一般要想打包(測試或發布),必須成為蘋果開發者。
(4)下面的打包環境:Xcode 7.3.1、iOS 9.3.2。
二、打包(生成ipa測試包)步驟
第1步:配置發布證書和AdHoc描述文件
(1)登陸蘋果開發者主頁 https://developer.apple.com,選擇Account,然后選擇 Certificates, Identifiers & Profiles,點擊Certificates:

(2)點擊右上角的加號:

(3)然后 continue,再選擇 App Store and Ad Hoc:

(4)之后,一路 continue,直到需要我們上傳 CSR 文件:

(5)創建CSR,即證書請求文件。首先,在鑰匙串訪問中,如下圖從證書頒發機構請求證書:

(6)然后,將CSR文件存儲到磁盤,其中的用戶電子郵件可以隨便寫,也可以寫你的真實郵箱,其余兩項也無特殊要求,可不寫。

(7)最后,將CSR文件上傳到蘋果服務器。此時蘋果服務器會自動生成,簽名后的CER文件(ios_distribution.cer),然后 Download 到本地磁盤,並雙擊該CER文件,即可完成安裝。 安裝之后,可到 鑰匙串訪問->登錄->證書 中查看該證書是否有效。
(8)AppID = Bundld ID 用來在App Store上全球唯一標識每一個應用程序的。注冊AppID, 告訴蘋果哪一個APP需要調試。

(9)點擊Identifiers ->點擊加號

(10)其中的 App ID Description 可以隨便寫

(11)在 App ID Suffix 中,有兩個選項可以填寫bundle ID,如下圖:

<1> Explicit App ID:填寫一個精確的ID,如果需要做遠程推送/游戲中心/內購等功能,必須填寫准確的bundle ID。
<2> Wildcard App ID:填寫一個模糊的ID,,如果不需要做遠程推送/游戲中心/內購等功能,直接填寫模糊的bundle ID即可,這樣可以提升我們的開發效率,
所以在開發中,為了保證方便,使用AppID時,可以使用通配符*,替代所有的應用程序。
<3> 之后,一直 continue 即可。
(12)點擊Devices,告訴蘋果哪一台設備可以進行真機調試

(13)點擊右上角的加號:

(14)在Xcode中,點擊window->Devices,獲取設備的UDID

(15)填寫設備的描述和設備的UDID注冊設備
<1> 使用設備的唯一標示符號制定,哪些真機能夠調試開發。
<2> 普通的開發者賬號,一個賬號只能注冊100台設備,蘋果並沒有提供刪除設備ID的功能,僅僅只能禁止某台設備調試(禁用后,名額仍然會被占用),被禁止的設備會在下一次付費時被清空(第二年),從而釋放名額。
<3> 每一個設備的唯一標示符號,能夠唯一准確的定位到一台設備,只能在”添加設備時”使用。
<4> 如果程序中使用了唯一標示符號,將無法上架。
(16)描述文件(Profiles),即告訴系統哪一台電腦的哪一個應用程序可以在哪一台設備上運行。 點擊Provisioning Profiles :

(17)點擊加號

(18)然后按照提示一步一步往下走,選擇對應的證書、AppID、Devices,告訴系統哪一台電腦/哪一個APP/哪一個設備可以調試。
注意,選擇對應的證書時,選擇的是:Ad Hoc

(19)最終得到 xxxxxx.mobileprovision文件,下載到本地磁盤,雙擊,保存到Xcode 中。
(20)注意點
<1> 檢查證書的狀態,可到 鑰匙串訪問->登錄->證書 中查看該證書是否有效。若無效,則可能現象為“ WWDCRA 無效 或 此證書的簽發者無效”,解決方案可以參考如下文章: iOS 探討之 WWDCRA 無效 or “此證書的簽發者無效”
<2> 生成AdHoc描述文件的時候要注意勾選所有的設備,只有被描述文件包含的設備才能進行相應的測試。如果是企業賬號的話則不需要添加設備的UDID。
<3> 打包ipa時的CER證書,名字為:ios_distribution.cer;
真機調試時的CER證書,名字為:ios_development.cer;
知識點補充:
在蘋果開發者主頁中配置好需要的證書之后,也可以不用“下載到本地,然后再安裝“,還有另一種解決方案,如下:
(1)Xcode->Preferences

(2)選擇 Accounts,然后點擊加號,然后選擇“Add Apple ID“

(3)輸入剛剛在蘋果開發者主頁中使用的 Apple ID,然后點擊 Sign In。

(4)登錄成功后,點擊右下角的 View Details,如下:

(5)點擊后,會有兩項顯示:
<1> Signing Identities,即簽名證書

<2> Provisioning Profiles,即描述文件

在最下方,有一個 Download All 按鈕,點擊后,再點擊 Done。即可將對應的證書和描述文件自動安裝到對應的位置。

第2步:配置Xcode(即在Xcode中,設置有效的Archive配置)
此處方法眾多,本人都親自嘗試過,先打包成ipa,再成功安裝到手機上。
方法1:(前提是已經用開發者帳號,注冊過相應的證書)
(1)Xcode->Preferences->Accounts,登錄你注冊過相應證書的 Apple ID 帳號。
(2)運行環境選擇真機,此時項目工程下方中的 Products 中是全紅的,如下:

(3)Command+B,然后顯示如下:

(4)右鍵選中第一項,選擇“Show in Finder“

(5)顯示如下

(6)打開你的iTunes,然后選擇“應用“,並直接將該app文件拖到iTunes中即可。

怎樣驗證此時該文件是ipa形式呢?如下圖:

結果顯示為:

說明我們的確得到了ipa文件。
備注:此處對(6)做個補充,即還有另一種方法得到ipa文件。
將(5)中得到的app文件,拷貝到一個新建文件夾中,該文件夾命名為“Payload“,然后右鍵選擇“壓縮Payload“,如下圖:

我們將得到一個Payload.zip文件,將該文件重命名為Payload.ipa即可我們想要的ipa文件,然后將該ipa文件拖入到iTunes中即可(或直接雙擊該ipa文件)。
(7)然后,如下圖,點擊安裝即可將該打包應用安裝到手機上。

方法2:(前提是已經用開發者帳號,注冊過相應的證書)
(1)Xcode->Preferences->Accounts,登錄你注冊過相應證書的 Apple ID 帳號。
(2)運行環境選擇真機,此時項目工程下方中的 Products 中是全紅的,如下:

(3)Xcode->Product->Archive,此時會直接跳轉到“Xcode->Window->Organizer“界面,如下:

(4)點擊 Export,並依次按下圖順序選擇:





(5)最終得到ipa文件,如下圖:

(6)直接雙擊該ipa文件,並在iTunes中將該應用安裝到手機上即可。
方法3:(前提是已經用開發者帳號,注冊過相應的證書)
(1)方法1和2中,Xcode可能已經默默幫我們做了很多配置,現在我們針對“要打包ipa測試包的任務“明確的做一些特定的配置。
(2)點擊 Product->Scheme->Edit Scheme,或者通過如下快捷方式:

進入到如下界面,並點擊Archive,確保Build Configuration 為 Release,如下:

(3)經過親測,TARGETS->Identity->Team 可以不用選擇注冊相應證書時對應的 Apple ID 帳號,而且選擇別的對應/非對應帳號也都沒問題。(可能Xcode已經默默的幫我們選擇了,所以,此步操作可做/可不做)

(4)選擇 TARGETS->Build Setting->Code Signing,如下:

(5)找到 Code Signing Identity 中的 MiGuRead_2AdHoc,點擊 Don't Code Sign,選擇之前配置好的證書,因為是打包,此處應選擇:iPhone Distribution: xxxxxx,其中Debug 和 Release里暫時不要改動。

(6)其中下方的 Provisioning Profile 可以使用默認的 Automatic,也可以指定對應的描述文件。(一般我們使用Automatic)

(7)執行方法2中的步驟(3)~(7)。
特別說明:此處步驟(5)中,網上有很多種設置方法;
(1)有的將Debug、Release 和 Provisioning Profile 都設置為了對應的證書;
(2)有的將上述打包ipa測試包的證書設置為了“iPhone Developer: xxxxxx“開發證書,但也打包成功了,但這其實是不匹配的,Xcode可能已經默默幫我們更正了。
(3)有的添加了AdHoc,這僅僅是為了區分,方便管理
<1> 先通過PROJECT->Info->Configurations,點擊加號,並選擇 Duplicate “Release” Configuration(這里一定要選擇復制“Release”,因為打包/發布版本一定是release的)

添加后,如下:

<2> 重命名(即命名可以自定義),一般證書和描述文件取名時默認用項目名稱+對應的功能縮寫。(有時也直接命名為AdHoc)重命名后,如下:

<3> 選擇 TARGETS->Build Setting->Code Signing,如下:

<4> 找到 Code Signing Identity 中的 MiGuRead_2AdHoc,點擊 Don’t Code Sign,選擇之前配置好的證書,因為是打包,此處應選擇:iPhone Distribution: xxxxxx,其中Debug 和 Release里暫時不要改動。

<5> 選好之后,顯示如下:

<6> 同樣,其中的 Provisioning Profile 可以使用默認的 Automatic,也可以指定對應的描述文件。(一般我們使用Automatic)
<7> 執行方法2中的步驟(3)~(7)。
————————————————
版權聲明:本文為CSDN博主「小僧_」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/cyuyanenen/article/details/51925005
