講之前先介紹一下bundle id佩耳,這個(gè)東西就相當(dāng)于我們每個(gè)人日常生活中的身份證一樣,一個(gè)App有且是有唯一的bundle Id,一旦App上架以后基本就無(wú)法修改了。特別是我們的bundle id還綁定了很多第三方的東西修改起來(lái)也是很麻煩,
通常我們創(chuàng)建一個(gè)App的配置有證書愕撰,App ID(bundle identifier),設(shè)備(Device)和齒輪文件還有一個(gè)CSR文件。
一.CSR文件
CSR文件(Certificate Signing Request)搞挣,證書簽名請(qǐng)求,要生成證書必須要先向keychain(鑰匙串)申請(qǐng)CSR文件带迟,此文件包含了一個(gè)包含開發(fā)者身份信息,我們?cè)偕暾?qǐng)生成CSR文件同時(shí)囱桨,Keychain Access|Keys中將新增一對(duì)Public/Private Key Pair(This signing identity consists of a public-private key pair that Apple issues)仓犬,他會(huì)和我們進(jìn)行匹配,導(dǎo)致只有創(chuàng)建證書的電腦才能將證書正確的安裝并使用舍肠,iOS開發(fā)的所有證書都是保存到鑰匙串里面進(jìn)行管理的搀继。此時(shí)的證書僅限于創(chuàng)建它的電腦去使用,如果我們想讓別人使用這個(gè)證書翠语,必須要到導(dǎo)出一個(gè).p12文件叽躯,
最左邊帶有三角尖頭的就代表時(shí)有私鑰的證書文件,這個(gè)時(shí)候我們就可以右擊選擇導(dǎo)出.p12文件肌括,他其實(shí)就是一個(gè)包含了私鑰和證書的備份文件点骑,或者可以理解為副本。這樣一個(gè)證書就可以給很多人使用了
PS:如何創(chuàng)建CSR文件http://www.reibang.com/p/5ba97e2b0045
如果我們想知道開發(fā)者中心的證書對(duì)應(yīng)著我們鑰匙串里面的證書谍夭,只需要比對(duì)它們的過(guò)期時(shí)間黑滴,一般來(lái)說(shuō)證書的有效期只有一年,而且因?yàn)橹忻纼蓢?guó)的時(shí)間差等原因紧索,一般來(lái)說(shuō)鑰匙串里的證書和開發(fā)者中證書的過(guò)期時(shí)間最多只相差一兩天袁辈,大多是相差一天或剛好吻合。
二.證書
證書分為Development測(cè)試(開發(fā))證書和Production發(fā)布證書,分別用來(lái)真機(jī)測(cè)試和發(fā)布(打包AdHoc版ipa)珠漂,首先一般來(lái)說(shuō)測(cè)試和發(fā)布證書一般只允許創(chuàng)建兩個(gè)晚缩,但是公司開發(fā)者帳號(hào)允許創(chuàng)建三個(gè)發(fā)布證書,個(gè)人開發(fā)者帳號(hào)沒(méi)有使用過(guò)不清楚甘磨。之前有人問(wèn)我是不是發(fā)布一個(gè)App就要?jiǎng)?chuàng)建一個(gè)發(fā)布證書,答案無(wú)疑是否定的橡羞,我們一般創(chuàng)建了一個(gè)測(cè)試和發(fā)布證書就可以給無(wú)數(shù)個(gè)App使用(理論上),但是推送的測(cè)試/證書是綁定了一個(gè)特定的App济舆,所以他是不同的App就要?jiǎng)?chuàng)建不同的推送證書。而且正在使用(或你電腦安裝且正在使用)的證書在被撤銷后還有24/48小時(shí)的過(guò)渡期莺债,這段時(shí)間內(nèi)你不能創(chuàng)建新的對(duì)應(yīng)的測(cè)試/發(fā)布證書滋觉,別人拷貝的.p12文件仍舊可以使用,關(guān)于這一點(diǎn)我也不是特別清楚齐邦,也是無(wú)意中發(fā)現(xiàn)的椎侠,有知道的可以在下面評(píng)論告知,不吝賜教措拇。
三.App ID(bundle identifier)****
App ID即Product ID我纪,用于標(biāo)識(shí)一個(gè)或者一組App。
App ID應(yīng)該和Xcode中的Bundle Identifier是一致(Explicit)的或匹配(Wildcard)的。
App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier(Company ID)作為前綴(Prefix/Seed)浅悉,一般不超過(guò)255個(gè)ASCII字符趟据。
App ID全名會(huì)被追加Application Identifier Prefix(一般為TeamID.),分為兩類:
Explicit App ID:唯一的App ID术健,用于唯一標(biāo)識(shí)一個(gè)應(yīng)用程序汹碱。例如“com.apple.garageband”這個(gè)App ID,用于標(biāo)識(shí)Bundle Identifier為“com.apple.garageband”的App荞估。
Wildcard App ID:含有通配符的App ID咳促,用于標(biāo)識(shí)一組應(yīng)用程序。例如“”(實(shí)際上是Application Identifier Prefix)表示所有應(yīng)用程序勘伺;而“com.apple.”可以表示Bundle Identifier以“com.apple.”開頭(蘋果公司)的所有應(yīng)用程序跪腹。
一旦bundle id在開發(fā)者帳號(hào)注冊(cè)以后就無(wú)法被注冊(cè)了,一般你在此注冊(cè)就會(huì)提示錯(cuò)誤飞醉,所以在免證書測(cè)試的時(shí)候最好要注意不要用你即將上架的bundle id真機(jī)測(cè)試尺迂,
一般我們上架了一定要選擇Explicit App ID,Wildcard包含通配符的是不允許上架的冒掌,因?yàn)槟愕腁pp id是不確定的噪裕,App id的作用是將你的證書(包含推送證書)和Bundle Id聯(lián)系(綁定)起來(lái)。另外我們?cè)趧?chuàng)建App id的時(shí)候還可以選擇是否需要開通推送/wallet/iCloud/Vpn等功能股毫,以前用Xcode7時(shí)開通了功能不需要設(shè)置對(duì)應(yīng)的entitlements文件審核也可以通過(guò)膳音,但是現(xiàn)在Xcdeo8開通的功能不設(shè)置的話會(huì)出現(xiàn)構(gòu)建版本失效,所以你只要開通你需要的功能即可铃诬。另外一個(gè)星期只能創(chuàng)建特定值以內(nèi)的App ID(具體多少不清楚了)
三.設(shè)備(Device)
Device就是運(yùn)行iOS系統(tǒng)用于開發(fā)調(diào)試App的設(shè)備祭陷。每臺(tái)Apple設(shè)備使用UDID來(lái)唯一標(biāo)識(shí)。
iOS設(shè)備連接Mac后趣席,可通過(guò)iTunes->Summary或者Xcode->Window->Devices獲取iPhone的UDID(identifier)兵志。
Apple Member Center網(wǎng)站個(gè)人賬號(hào)下的Devices中包含了注冊(cè)過(guò)的所有可用于開發(fā)和測(cè)試的設(shè)備,普通個(gè)人開發(fā)賬號(hào)每年累計(jì)最多只能注冊(cè)100個(gè)設(shè)備宣肚。
Apps signed by you or your team run only on designated development devices.
Apps run only on the test devices you specify.
本文的Devices是指連接到Xcode被授權(quán)用于開發(fā)測(cè)試的iOS設(shè)備(iPhone/iPad)想罕。
另外用戶要向清除掉一些已注冊(cè)的UDID需要等到蘋果帳號(hào)續(xù)費(fèi)后帳號(hào)更新配置的時(shí)候刪除才有效,否則你即使刪除了其實(shí)它也會(huì)占用你的名額(100個(gè))霉涨。
另外按价,當(dāng)我們每次添加了新的udid相讓新的設(shè)備可以安裝并使用,我們都需要修改齒輪文件把新的設(shè)備添加進(jìn)去生成新的齒輪文件笙瑟,然后下載并使用新的楼镐。
四.齒輪文件(Provisioning Profile)
齒輪文件又名配置文件/授權(quán)文件,因?yàn)榭雌饋?lái)像齒輪所以我稱呼為齒輪文件往枷。齒輪文件文件包含了上述的所有內(nèi)容:證書框产、App ID和設(shè)備凄杯,
一個(gè)Provisioning Profile對(duì)應(yīng)一個(gè)Explicit App ID或Wildcard App ID(一組相同Prefix/Seed的App IDs)秉宿。在網(wǎng)站上手動(dòng)創(chuàng)建一個(gè)Provisioning Profile時(shí)戒突,需要依次指定App ID(單選)、證書(Certificates蘸鲸,可多選)和設(shè)備(Devices妖谴,可多選)。用戶可在網(wǎng)站上刪除(Delete)已注冊(cè)的Provisioning Profiles酌摇。
Provisioning Profile也分為Development和Distribution兩類膝舅,有效期同Certificate一樣。
我按照順序從上到下講解這四個(gè)
1.Save for iOS App Store Deployment
保存到本地 準(zhǔn)備上傳App Store 值桩,使用的是App Store齒輪文件
2.Save for Ad Hoc Deployment
保存到本地 準(zhǔn)備在賬號(hào)添加的可使用設(shè)備上使用(具體為在開發(fā)者賬戶下添加可用設(shè)備的udid),該app包是發(fā)布證書編譯的豪椿,即打包Ad Hoc包時(shí)使用Ad Hoc齒輪文件使用的奔坟,由設(shè)備限制
3.Save for Enterprise Deployment
這種主要針對(duì)企業(yè)級(jí)賬戶下 準(zhǔn)備本地服務(wù)器分發(fā)的app,沒(méi)有設(shè)備限制(企業(yè)帳號(hào)專用
4.Save for Development Deployment
針對(duì)內(nèi)部測(cè)試使用搭盾,主要給開發(fā)者的設(shè)備(具體也為在開發(fā)者賬戶下添加可用設(shè)備的udid)咳秉。該app包是測(cè)試證書證書編譯的,有設(shè)備限制
App id就是我們之前注冊(cè)的App id,
Certificates一般來(lái)說(shuō)測(cè)試的齒輪文件可能有多個(gè)鸯隅,因?yàn)樗嵌噙x澜建,但是發(fā)布的齒輪文件時(shí)單選,只會(huì)顯示1
Devices對(duì)應(yīng)著我們的添加的did的設(shè)備滋迈,如果為0那只有兩種可能霎奢,一個(gè)是發(fā)布到AppStore使用,還有一個(gè)是打包企業(yè)包使用饼灿,它們沒(méi)有設(shè)備限制也就是這里體現(xiàn)出來(lái)的,這個(gè)地方數(shù)字為幾意味著對(duì)應(yīng)的那些設(shè)備可以安裝并使用你的App帝美,否則即使你安裝了也會(huì)出現(xiàn)閃退導(dǎo)致無(wú)法使用
最后感興趣的還可以看下這個(gè)http://www.cnblogs.com/wangyang1213/p/5209119.html