1 .iOS開發(fā)證書,描述文件,bundle ID的關(guān)系
蘋果為了控制應(yīng)用的開發(fā)與發(fā)布流程,制定了一套非常復(fù)雜的機(jī)制。這里面的關(guān)鍵詞有:個(gè)人開發(fā)者賬號(hào),企業(yè)開發(fā)者賬號(hào),bundle ID,開發(fā)證書,發(fā)布證書(又叫“生產(chǎn)證書”),開發(fā)描述文件,發(fā)布描述文件,推送證書等...。初級(jí)開發(fā)者很難理解這中間的關(guān)系和作用。下文就對(duì)上述列出的關(guān)鍵內(nèi)容和它們的關(guān)系做個(gè)詳細(xì)介紹。
-
開發(fā)者賬號(hào)
開發(fā)者賬號(hào)其實(shí)就是apple id,只不過要成為開發(fā)者,需要去蘋果開發(fā)者中心激活開發(fā)權(quán)限。激活開發(fā)者賬號(hào)分為三種,個(gè)人,公司和企業(yè)。這三種賬號(hào)各自有些區(qū)別,下表是他們主要區(qū)別的對(duì)比:
| 賬號(hào)類型 | 支持applestroe上架 | 測(cè)試設(shè)備數(shù)量 | 申請(qǐng)費(fèi)用 | 申請(qǐng)需要 |
|---|---|---|---|---|
| 個(gè)人 | 是 | 100 | 99$ | - |
| 公司 | 是 | 100 | 99$ | 鄧氏碼 |
| 企業(yè) | 否 | 不限 | 299$ | 鄧氏碼 |
所以如果應(yīng)用需要上appstroe,就要?jiǎng)?chuàng)建個(gè)人或者公司類型的賬號(hào);
如果只想內(nèi)部發(fā)布,就可以申請(qǐng)企業(yè)賬號(hào);
個(gè)人賬號(hào)和公司賬號(hào)的區(qū)別就是公司賬號(hào)能邀請(qǐng)多個(gè)賬號(hào),他們可以和你共享資源協(xié)同開發(fā)此應(yīng)用,而不需要總是問你要你的賬號(hào)使用。
bundle ID
bundle ID可以翻譯成包ID,也可以叫APP ID 或應(yīng)用ID,它是每一個(gè)ios應(yīng)用的全球唯一標(biāo)識(shí)。無(wú)論代碼怎么改,圖標(biāo)和應(yīng)用名稱怎么換,只要bundle id沒變,ios系統(tǒng)就認(rèn)為這是同一個(gè)應(yīng)用。每開發(fā)一個(gè)新應(yīng)用,首先都需要到member center->identifier->APP IDS去創(chuàng)建一個(gè)bundle id。但是bundle id分為兩種:
Explicit App ID(明確的APP ID),一般格式是:com.domainname.appname。這種id只能用在一個(gè)app上。每一個(gè)新應(yīng)用都要?jiǎng)?chuàng)建一個(gè)。
Wildcard App ID(通配符APP ID), 一般格式是:com.domainname.*。這種id可以用在多個(gè)應(yīng)用上,雖然方便,但是使用這種id的應(yīng)用不能使用通知功能,所以并不常用。iOS Certificates(證書)
ios certificates就是證書。它的作用就是證明你的mac具有開發(fā)或發(fā)布某個(gè)開發(fā)者賬號(hào)下應(yīng)用的權(quán)限。而且證書還分成兩種,一種是開發(fā)證書(Development certificate); 另一種是發(fā)布證書或叫生產(chǎn)證書(Production certificate)。
1 .development certificate
開發(fā)證書是證明你的mac具有開發(fā)和真機(jī)調(diào)試你的程序的東西。但是每個(gè)證書關(guān)聯(lián)著一個(gè)開發(fā)者賬號(hào),也就是說,你只能使用這個(gè)證書開發(fā)這個(gè)賬號(hào)底下的應(yīng)用,它是通過bundle id來(lái)知道該應(yīng)用是不是屬于自己的賬號(hào)。所以每次為一個(gè)開發(fā)者帳號(hào)開發(fā)應(yīng)用,就得需要這個(gè)賬號(hào)創(chuàng)建的開發(fā)證書。
2 .Production certificate
生產(chǎn)證書是證明你的mac是否具有發(fā)布應(yīng)用的權(quán)限。在archive到appstore的時(shí)候,必須有生產(chǎn)證書,否則時(shí)上傳不成功的。
3.根證書
無(wú)論是開發(fā)證書還是生產(chǎn)證書,都必須從根證書上派生。根證書就是根mac產(chǎn)生的證書,menber center上保存的那個(gè)證書就是根證書,它只能安裝在創(chuàng)建它的那臺(tái)mac上,其他的開發(fā)mac必須從那臺(tái)根mac上導(dǎo)出證書使用。也就是所有的子證書都只能從根證書派生而來(lái)。iOS Provisioning Profiles(描述文件)
描述文件它用來(lái)標(biāo)識(shí)某個(gè)設(shè)備是否具有安裝某個(gè)應(yīng)用的權(quán)限。描述文件分為開發(fā)描述文件和發(fā)布描述文件。其中發(fā)布描述文件又分為臨時(shí)發(fā)布描述文件和正式發(fā)布描述文件。
1 . 開發(fā)描述文件(develop provisioning profile)
開發(fā)描述文件,創(chuàng)建它需要bundle ID + 開發(fā)證書 + 測(cè)試設(shè)備(在devices中添加); 編譯的時(shí)候必須三者對(duì)應(yīng),否則編譯器會(huì)報(bào)錯(cuò)。
2 . 臨時(shí)發(fā)布描述文件(distribution ad hoc)
臨時(shí)發(fā)布描述文件是用來(lái)在有限設(shè)備上發(fā)布的。創(chuàng)建它需要bundle ID +發(fā)布證書+發(fā)布設(shè)備,編譯時(shí)也必須三者對(duì)應(yīng)。
3 . 正式發(fā)布描述文件(distribution appstore/distribution ad house)
個(gè)人賬號(hào)和企業(yè)賬號(hào)創(chuàng)建的正式發(fā)布描述文件是不同的。因?yàn)?code>個(gè)人賬號(hào)是在appstrore上發(fā)布,所以創(chuàng)建的是distribution appstore描述文件,而企業(yè)賬號(hào)只能內(nèi)部發(fā)布,所以創(chuàng)建的叫distribution ad house描述文件。但是它們創(chuàng)建所需要的東西都是一樣的:bundle ID + 發(fā)布證書。因?yàn)樗麄兪窃诓淮_定的設(shè)備上安裝的,所以不需要選擇設(shè)備。
2. Apple開發(fā)賬號(hào)添加團(tuán)隊(duì)成員
申請(qǐng)了一個(gè)公司或企業(yè)級(jí)的蘋果開發(fā)者賬號(hào),可以添加團(tuán)隊(duì)成員協(xié)同開發(fā)。
團(tuán)隊(duì)成員有三種角色,分別是 Agent (代理), Admin (管理),Member (成員)。
代理: 就是注冊(cè)開發(fā)者賬號(hào)的那一個(gè),權(quán)限最高,續(xù)費(fèi)和創(chuàng)建開發(fā)商證書只能使用該賬號(hào);
管理: 管理分發(fā)證書、管理測(cè)試設(shè)備、管理應(yīng)用配置等等;
成員: 沒有管理權(quán)限,只能下載和請(qǐng)求數(shù)據(jù)。
關(guān)于團(tuán)隊(duì)成員的詳細(xì)介紹,可見:官方文檔
去開發(fā)者中心登錄開發(fā)者賬號(hào),可以看到開發(fā)者信息如下:

添加團(tuán)隊(duì)成員:
1 . 使用代理或管理員賬號(hào)登錄開發(fā)者中心
2 . 選中People

3 . 選擇邀請(qǐng)人
Invite People
4 .可以邀請(qǐng)成為管理員或者成為開發(fā)人員,填寫對(duì)應(yīng)開發(fā)者AppleID的郵箱地即可(可以填寫一個(gè)或多個(gè)),需要在30天內(nèi)接受。

5 . 點(diǎn)擊
Invite按鈕后,被添加人的郵箱會(huì)受到一封郵件,點(diǎn)擊View invitation,然后選擇Accept接受成為開發(fā)者。

這樣就添加了一個(gè)新的開發(fā)者。
6.可以更改其他管理員成員權(quán)限或者移除其他管理員和成員

參看官方文檔
3 .開發(fā)證書,生產(chǎn)證書,描述文件,AppID關(guān)系及生成。
- 首先要申請(qǐng)證書,申請(qǐng)?zhí)O果開發(fā)者賬號(hào)教程,還沒有的話申請(qǐng)一個(gè)或者借用、這里不再詳敘。
登錄開發(fā)者中心,如果還沒申請(qǐng)證書,界面如下:
沒有證書界面.png
如果有證書登錄界面如下:
已經(jīng)申請(qǐng)過證書登錄界面.png - 有賬號(hào)后就可以正式開發(fā)上架了,具體流程如下:
1 .生成開發(fā)和發(fā)布證書
(1).通過鑰匙串獲取證書請(qǐng)求文件Certificate Signing Request (CSR)文件。
選擇“鑰匙串訪問”-“證書助理”-“從證書頒發(fā)機(jī)構(gòu)請(qǐng)求證書…”,如下圖:
image.png
填寫郵件地址和常用名稱,選擇“存儲(chǔ)到磁盤”,會(huì)生成一個(gè)CSR文件到本地磁盤。
image.png
生成的CSR.png
(2) . 登錄開發(fā)者中心,選擇Certificates, Indentifiers & Profiles可以獲取開發(fā)和發(fā)布證書。
Certificates -> All -> +
image.png
選擇In-House and Ad Hoc是發(fā)布證書,選擇iOS App Development是打包證書。下面選擇發(fā)布證書
image.png
Choose File選擇生成的的CSR文件,點(diǎn)擊generate生成cer證書。
image.png
可以看見生成的開發(fā)和生產(chǎn)證書如下:
開發(fā)證書.png
生產(chǎn)證書.png
選擇Download下載到本地,然后雙擊或拖拽到鑰匙串中安裝
下載證書.png
安裝后的開發(fā)和發(fā)布證書.png
2 . 生成App ID。
選擇Identfiers -> App IDs -> +
image.png
Name可以隨便填,但不能是中文和特殊符號(hào),主要起描述作用。
Bundle ID就是App的Bundle ID完全一樣,全球唯一,一般格式是:com.domainname.appname。
注冊(cè)App ID.png
還可以選擇NFC,推送等功能,選中Continue -> Register -> Done ;就完成了App ID 的注冊(cè)。
其他服務(wù)功能.png
App ID注冊(cè)成功.png
3 . 生成描述文件Provisioning Profile(企業(yè)版不需要device即iPhone的UDID,因此跳過)。
選擇Provisioning Profile->All -> +:

iOS App Development是開發(fā)證書的描述文件,n House是企業(yè)發(fā)布證書的描述文件。
選擇剛剛生產(chǎn)的App ID,點(diǎn)擊Continue。

選擇剛剛生產(chǎn)的開發(fā)或發(fā)布證書:

填寫描述文件名稱,可以隨便填,便于自己理解就好。

可以下載描述文件雙擊安裝,也可以去項(xiàng)目中Xcode的偏好設(shè)置去下載安裝:


現(xiàn)在應(yīng)用程序就可以打包上線啦!
4.證書導(dǎo)出p12文件
- 為什么要導(dǎo)出.p12文件?
當(dāng)我們用大于三個(gè)mac設(shè)備開發(fā)應(yīng)用時(shí),想要申請(qǐng)新的證書,如果在我們的證書里,包含了3個(gè)發(fā)布證書,6個(gè)開發(fā)證書,可以發(fā)現(xiàn)再也申請(qǐng)不了開發(fā)證書和發(fā)布證書了。(一般在我們的證書界面中應(yīng)該只有一個(gè)開發(fā)證書,一個(gè)發(fā)布證書,沒必要生成那么多的證書,證書一般在過期之后才會(huì)重新添加。)會(huì)提示超過了最大數(shù)量,并且不能選擇生產(chǎn)證書了。如下圖:
image.png - 不能添加證書的解決辦法。
1 .撤銷(Revoke)已經(jīng)生成的證書(不建議使用),然后重新生成一個(gè)新的證書。如下圖:
撤銷證書.png
注意:這種方法是可以的,但是會(huì)造成相應(yīng)的Provisioning Profiles失效,這是小問題。但是又要重新申請(qǐng)證書甚至描述文件很浪費(fèi)時(shí)間,所以不提倡這種做法。
2 . 導(dǎo)出.p12文件
每一個(gè)證書都可以生成一個(gè).p12文件,這個(gè)文件是一個(gè)加密的文件,只要知道其密碼,就可以供給所有的mac設(shè)備使用,使設(shè)備不需要在蘋果開發(fā)者網(wǎng)站重新申請(qǐng)開發(fā)和發(fā)布證書,就能使用。
注意:一般.p12文件是給與別人使用的,本機(jī)必須已經(jīng)有一個(gè)帶秘鑰的證書才可以生成.p12文件
打開鑰匙串->我的證書,選擇要導(dǎo)出的證書,右鍵選擇導(dǎo)出“....”證書。如下圖:
image.png
填寫要導(dǎo)出證書名稱,保存的地址路徑,文件類型選擇為個(gè)人信息交換(.p12)
image.png
設(shè)置密碼:
設(shè)置密碼.png
生成的p12文件,將p12文件,密碼,和描述文件發(fā)給別人就可正常開發(fā)啦。
image.png
p12文件和描述文件.png






















