將APP程式釋出到iPhone或iPad上去測試

NO IMAGE

轉載至 http://www.appshare.cn/thread-3123-1-1.html

圖文的介紹版本:http://fstoke.me/blog/?tag=apple 

絕大多數iPhone Developer/Distribution 的程式碼簽名生成錯誤是因為證書和Provisioning profiles沒有在開發系統上正確安裝引起的。本文描述在開發 iPhone OS 應用程式時所需要的檔案以及如何安裝它們。這個技術說明為“Program User Guide”提供支援,Program User Guide 可以在 Portal Resources 下的 iPhone
Developer Program Provisioning Portal
 找到。如果你對 iPhone 開發剛入門,請先閱讀 Program User Guide.
需要什麼
  所有 iPhone 應用程式在iPhone OS裝置上執行之前必須用合法的 signing identity 進行簽名。
為了在自己的iPhone OS裝置開發而做應用程式簽名,需要:
私鑰
iPhone 開發者證書
Development Provisioning profile
上 App Store 需要:
私鑰
iPhone Distribution 證書
App Store Distribution Provisioning profile
要用在 Ad Hoc 上需要:
私鑰
iPhone Distribution 證書
Ad Hoc Distribution Provisioning profile
  私鑰是在生成認證簽名請求(CSR)時建立的,在CSR提交和通過之後,可以在 iPhone Developer Program Provisioning Portal 裡建立和下載證書以及provisioning
profiles。
  注意:為了更好的區分不同的provisioning profile,在建立的時候注意命名,例如 “wild card dev profile”, “MyApp Push distribution profile”, “Ad Hoc Testers profile” 等等。
這些東西的作用
  Signing identity 由私有加密key和數字證書組成。在iPhone OS開發中,Xcode 用私鑰來簽署程式,這樣程式就可以在iPhone OS開發裝置上執行或者提交到app store。
  公鑰包含 iPhone開發者/釋出商證書,用來認證已簽名的程式。
  Provisioning pfofiles 用來告知Xcode用哪個證書/私鑰組合來簽署程式。開發裝置也通過它來決定如何認證安裝在裝置上的程式。
證書 – 安裝/校驗
  下載 iPhone Development 證書或者 iPhone Distribution 證書之後,雙擊下載的 .cer 檔案啟動 Keychain Access並安裝證書。如果詢問將證書安裝到哪,請選擇 “login” keychain。
  要確定證書是否正確安裝,選擇 “login” keychain 並且選擇 “My Certificates” 類別。如果想要部署到你的開發裝置,選擇以”iPhone Developer Certificate”為標題開頭的證書。如果要釋出程式,選擇以”iPhone Distribution Certificate”標題開頭的證書。在 Information view 裡應該有一個帶選中標誌的綠圈告訴你證書合法,意思就是 WWDR Intermediate Certificate 已經安裝在系統裡,並且證書已校驗。要是看不見綠圈就應該從
iPhone Developer Program Provisioning Portal 下載 WWDR Intermediate Certificate 並且像安裝iPhone Developer 或者 Distribution Certificate那樣給它裝上。選中的證書旁有個小三角,點選它會顯示證書關聯的私鑰。要是沒有,看看你是不是在“My Certificates”類別下。要對程式進行簽名必須需要私鑰,要是當前確實在”My Certificates”下並且還是沒有小三角,需要作廢舊證書並且建立並提交一個新的CSR來建立新的私鑰和證書。
  注意:如果建立了新私鑰或者證書,關聯到舊證書的配置檔案就失效了,需要重新生成新 pfofiles。最好在拷貝新證書之前把舊的從開發機器和裝置上刪除掉,這樣可避免新舊證書/配置檔案混淆。這麼做不影響已經在app store裡的程式。
  警告:安裝 iPhone 證書後不要改動預設的 “Use System Defaults” 信任設定。如果信任設定不是’Use System Defaults’,在生成應用程式的時候會得到一個 CSSMERR_TP_NOT_TRUSTED 簽名錯誤。
Provisioning Profiles – 安裝/校驗
  要把從iPhone Developer Program Provisioning Portal下載回來的Provisioning Profile安裝到開發機器,首先需要啟動 Xcode然後點選”Window > Organizer”來開啟Organizer。把provisioning profile拖到標記為”Provisioning Profiles”的區域內即可。
  如果是為了開發而安裝 Provisioning Profile,還需要把它裝在開發裝置上。在 iPhone OS 裝置已經插到電腦上的時候,在 Devices 三角下選擇裝置,然後在Organizer裡把開發provisioning profile拖進去。這就把 Provisioning profile裝到 iPhone OS裝置裡了。
  注意:確保安裝在開發裝置和Mac裡的 Development Provisioning完全相同對成功生成並安裝測試程式是非常重要的。
  注意:跟 Development Provisioning Profiles不同,App Store Distribution Provisioning Profiles不能安裝在iPhone OS裝置裡。用App Store Distribution Provisioning生成的程式是用來通過 iTunes Connect上傳到App Store的。
  要告訴 Xcode 使用哪個 Provisioning profile,開啟 Xcode 專案,開啟 Target build settings,滾動到 Code Signing。在 Code Signing 區域有個帶小三角的 Code Signing Identity。確定設定是為任何 iPhone OS 裝置,之後在Value列點選彈出選單並且選擇要使用的 Provisioning Profile。為了開發,建議選擇 “iPhone Developer”,要釋出,建議選擇”iPhone Distribution”。這些都在彈出選單的”Auto
matic Profile Selector”區域裡,這樣就可以使 Xcode來為你找到正確的Provisioning Profile。
  注意:要是丟失了 iPhone devloper/Distribution證書的私鑰,就無法選擇證書關聯到的 Provisioning Profile。從備份中匯入 iPhone developer/Distribution 證書的私鑰可以解決這個問題。如果丟了或者刪了私鑰,就得生成一個新的CSR並且下載新的 iPhone Developer/Distribution 證書和Provisioning Profile。
  程式的 Bundle Identifier 必須跟Provisioning profiles的Bundle Identifier APP ID匹配。要編輯程式的 Bundle Identifier,開啟 target’s properties settings,在 Identifier 欄輸入 Bundle Identifier。如果在 App id的bundle identifier裡使用星號萬用字元,就可以替換為反向DNS格式的字元。
  下面有一些可以輸入到 Identifier 框的例子。
  如果AppID是 A1B2C3D4E5.com.domainname.applicationname。輸入com.domainname.applicationname 作為 Bundle Identifier
  AppID是 A1B2C3D4E5.*,輸入反向DNS格式的字串作為 Bundle Identifier。
關於 Profiles 和 App IDs
  建立 Provisioning Profiles 時可以關聯兩種型別的 App ID。第一個型別叫做通用App ID(Wildcard App ID)。推薦大多數iPhone OS開發用通用App ID的Provisioning Profiles,因為這樣單個通用App ID可以用來生成和安裝大多數程式,包括 iPhone Reference Libary 裡的示例程式碼。通用App ID通過在  Identifier 裡輸入星號建立。星號必須是App ID字串的最後一個字元。如果使用通用App ID,記著在Xcode專案裡輸入Bundle
Identifier時把星號替換為反向DNS格式。
假設有 App ID ABCDE12345.*:
ABCDE12345是Bundle種子ID(由Apple生成)
*是App ID的Bundle Identifier。在xcode裡輸入bundle identifier時需要把星號替換為反向DNS格式。
假設有 App ID: ABCDE12345.com.yourcompany.*
ABCDE12345是Bundle種子ID(由Apple生成)
com.yourcompany.* 是App ID的Bundle Identifier。並且xcode專案裡的bundle identifier必須以’com.yourcompany.’開頭,星號可以替換成任意字串。
  第二類 App ID 稱作固定AppID(Explicit App ID)。這類 APP ID限定了一個provisioning profile只允許一個程式安裝。啟用iPhone OS 3.0特性需要固定 App ID,例如 In App Purchase或者 App Push Notification 服務。固定ID通過輸入指定字串建立。推薦做法是用反向DNS格式。
  重要:一個避免將來可能產生問題的提示:修改 yourcompany 為真正的名字。
Ad Hoc
為 Ad Hoc釋出生成應用程式跟生成App Store程式類似,只是多了兩步。第一,需要用 iPhone Developer Program Provisioning Portal 建立一個 Ad Hoc Distribution provisioning Profile並新增發布目標裝置的 UDID。第二,建立一個程式碼簽名Entitlements file。關於如何建立Entitlements file請閱讀 iPhone 開發者指南的 Managing
Application Entitlements
部分。建立完 Entitlements file並把它新增到 Code Signing Entitlements build settings之後,開啟EntitleMents File並且田間或編輯 get-task-allo把它設為false。

=========================================================================
另一篇除錯教程:
=========================================================================
iphone真機除錯教程

對於真機除錯,首先要在蘋果網站上註冊APP ID,以及購買iPhone Develop Program(iDP) 開發者授權,99美元。然後要建立證書請求CSR,建立步驟如下:


設定OCSP和CRL為關閉狀態。


Mac OS 中,開啟應用程式,找到 鑰匙串訪問(Keychain Access)工具開啟主選單- 證書助理(Certificate
Assistant)-從證書代理請求證書(Request a Certificate From a Certificate Authority)輸入iDP註冊時的email,使用者名稱自定義,選擇“儲存到磁碟”,選擇‘Let me specify key pair information’。


選擇儲存路徑,證書請求建立成功。
1.接下來就可以登入iDP Portal提交證書請求了,到這個頁面
http://developer.apple.com/iphone/manage/certificates/team/index.action 


點Development,‘Request Certificate’,然後點Browser,新增剛才生成的證書,點submit。

點選Approve,一分鐘後會生成一個.cer檔案。

下載Download,雙擊它。

單擊“好”,就可以把certificate加入到keychain裡面了。
2. 現在註冊裝置了,通過xcode的organizer或者itunes都可以檢視你的機器的udid。在上面那個頁面裡關聯一下即可。這個頁面有詳細介紹
http://developer.apple.com/iphone/manage/devices/howto.action 
開啟XCODE,在window選單下,點選Organizer,出現這個頁面(前提是要連上真機哦)

identifier那一行字元就是device id了,複製它。開啟 http://developer.apple.com/iphone/manage/devices/index.action 
 
點選“Add Devices”
 
給device name取個自己的名字,把之前複製的字元貼上到Device ID那,點下面的submit就可以了
3. 生成APP ID,
建立應用程式,需要指定程式的ID,在網站上建立一個APP
ID,這個ID可以是針對一個程式也可以針對多個程式,假設現有一個程式Testgame,可以指定它的ID為
com.Thinkrace.Testgame或者是com.Thinkrace.* 在站點上建立好,對於 com.Thinkrace.*
可以適合所有的程式。還有很重要一點要注意的是,這個ID對應的是你的程式target
info裡的name,不是你程式本身的名字,這裡要注意的一點是:如果你的APP ID是用*號代替的,那麼在SDK3.0環境裡,arget
info裡的name不能寫成類似com.Thinkrace.*這樣的,後面的*號依然可以用任何字元代替,但是不能用*,會報錯的,而在SDK3.0
之前的環境可以用*,這裡說的這種情況是APP ID用*代替的,不用*代替則無所謂了。改好了name後還要在target
info裡把build項裡的iphone
developer改成你的provisioning,這就可以了(不過這要等你生成了provisioning,最後除錯的時候改)。具體做法見下圖

開啟網頁 http://developer.apple.com/iphone/manage/bundles/index.action [/url] 

不帶*的形式

帶*的形式
4. 最後可以生成Provisioning Profiles了,這個最為重要,上面做的一切都是為了它,很簡單的,一分鐘之內會生成DOWNLOAD,下載就可以了。不會的話可以參考 http://developer.apple.com/iphone/manage/provisioningprofiles/howto.action 

點選“New Profile”

點選“submit”,一分鐘內會生成DOWNLOAD

下載provisioning,雙擊
5. 真機除錯
安裝Provisioning,雙擊即可。連線iPhone/iPod,使用XCode
-> Window -> Organize開啟,如果連線了iPhone,會在Device中顯示相應的裝置,點選 “Use
Device for Develop”,開發中執行裝置中可以選擇響應的Device,還有很重要的一點就是Iphone
SDK要和真機版本一致,版本不相容的話會出現找不到裝置之類的錯誤,我深有體會。以上所有步驟在這面這個頁面有視訊教程http://developer.apple.com/iphone/videos/popupappids.action 
大家可以參考下。

Provisioning 建立規則

1.點選’Add’新增一個規則,填入常用名名字,選擇一個裝置,選擇一個Certificates,選擇一個App ID。如果你上面的設定裡有填,這裡就很簡單,然後選擇submit提交。

2. 在Provisioning裡就可以看到這個新加入的規則,下載到本地。

3.安裝規則,你可以簡單的把下載的檔案拖動到Xcode的圖示上,或者拖動那個.mobileprovision檔案到iTunes的圖示,或者複製檔案到/Library/MobileDevice/ProvisioningProfiles裡。還可以在Xcode的Organizer裡iPhone裝置的Provisioning裡按 來新增。

4. 開啟Xcode,開啟你的project, 視窗左上角選擇iPhone Device 3.0(Base SDK)而不是iPhone Simulator 3.0。

5.選中你的Targets,雙擊那個檔案開啟 Target Info,在Build中找到Code Signing部分,Code Signing Identity,更改Value,選擇你剛剛加入的那個證書。

6.在Properties裡面,修改Identifier部分,這個地方注意,這裡要填入App ID後面類似域名的部分,而不是全部App ID, 如果在註冊app id 地方填入的是一個域名,這裡也要寫那個域名。

7. 此時,全部完成,Build and go 編譯吧,程式會自動被傳入iPhone執行,開啟iPhone就會發現自己的程式了