在Xcode 7之前想把iOS程序裝上設(shè)備(iPhone、iPad等等),都必須向Apple交保護(hù)費(fèi)(加入Apple Developer Program)。Xcode 7允許不交保護(hù)費(fèi)直接讓iOS程序在設(shè)備上跑,只要把設(shè)備連接上Xcode,各設(shè)備登錄的Apple ID不一致也沒(méi)關(guān)系。但不交保護(hù)費(fèi)是有限制滴:無(wú)法開(kāi)啟某些service(推送,內(nèi)購(gòu)等),無(wú)法把程序?qū)С霭惭b包或者提交到App Store。
交過(guò)錢(qián)后,可以通過(guò)Member Center或者Xcode創(chuàng)建開(kāi)發(fā)證書(shū)(development certificate)和發(fā)布證書(shū)(distribution certificate)。證書(shū)用于證明身份,Apple通過(guò)加密技術(shù)分別把開(kāi)發(fā)證書(shū)和發(fā)布證書(shū)結(jié)合成兩個(gè)“簽名身份”(signing identites)。兩個(gè)簽名身份保存在鑰匙串(keychian Access)中。簽名身份用于對(duì)App進(jìn)行簽名(sign)和預(yù)處理(provision)。
關(guān)鍵字解釋
development certificate:開(kāi)發(fā)證書(shū)。如果是以組織(organization)的形式加入Apple Developer Program,每個(gè)團(tuán)隊(duì)成員都可以創(chuàng)建自己的開(kāi)發(fā)證書(shū)。
distribution certificate:發(fā)布證書(shū)。無(wú)論是組織還是個(gè)人開(kāi)發(fā)者,都只有一個(gè)發(fā)布證書(shū)。
signing identites:開(kāi)發(fā)簽名身份,用于在程序構(gòu)建(builde,發(fā)生在真機(jī)調(diào)試或者將程序生成archive文件時(shí))過(guò)程中對(duì)其簽名,有開(kāi)發(fā)、發(fā)布身份之分。身份由Apple發(fā)布的公鑰、私鑰及對(duì)應(yīng)的證書(shū)構(gòu)成。如果是以組織(organization)的形式加入Apple Developer Program,“開(kāi)發(fā)簽名身份”的數(shù)量視團(tuán)隊(duì)成員的數(shù)量而定,每個(gè)團(tuán)隊(duì)成員都可以創(chuàng)建自己的開(kāi)發(fā)證書(shū),由此證書(shū)生成對(duì)應(yīng)的開(kāi)發(fā)簽名身份。無(wú)論是以組織或者個(gè)人的形式加入Apple Developer Program,都只有一個(gè)發(fā)布證書(shū),與此對(duì)應(yīng)只有一個(gè)發(fā)布簽名身份。
developer profile:開(kāi)發(fā)者描述文件,是開(kāi)發(fā)證書(shū)、發(fā)布證書(shū)和預(yù)處理描述文件的統(tǒng)稱(chēng)。
provisioning:字面是意思是準(zhǔn)備,指的是App在機(jī)器上啟動(dòng)前的預(yù)處理過(guò)程,在這個(gè)過(guò)程中根據(jù)“預(yù)處理描述文件”判斷App的作者、App是否被篡改、開(kāi)啟哪些服務(wù)(service)等,最終交由系統(tǒng)決定是否啟動(dòng)該App。
team provisioning profile:開(kāi)發(fā)預(yù)處理文件(development provisioning profile),由Xcode創(chuàng)建和管理。該文件在真機(jī)調(diào)試時(shí)使用。
provisioning profiles:預(yù)處理描述文件,為預(yù)處理提供必要信息。是team provisioning profile、store provisioning profile等預(yù)處理文件的統(tǒng)稱(chēng)。從Member Center下載并被植入軟件包(app bundle)中,這個(gè)過(guò)程一般由Xcode自動(dòng)處理。