讲之前先介绍一下bundle id,这个东西就相当于我们每个人日常生活中的身份证一样,一个App有且是有唯一的bundle Id,一旦App上架以后基本就无法修改了。特别是我们的bundle id还绑定了很多第三方的东西修改起来也是很麻烦,
通常我们创建一个App的配置有证书,App ID(bundle identifier),设备(Device)和齿轮文件还有一个CSR文件。
一.CSR文件
CSR文件(Certificate Signing Request),证书签名请求,要生成证书必须要先向keychain(钥匙串)申请CSR文件,此文件包含了一个包含开发者身份信息,我们再申请生成CSR文件同时,Keychain Access|Keys中将新增一对Public/Private Key Pair(This signing identity consists of a public-private key pair that Apple issues),他会和我们进行匹配,导致只有创建证书的电脑才能将证书正确的安装并使用,iOS开发的所有证书都是保存到钥匙串里面进行管理的。此时的证书仅限于创建它的电脑去使用,如果我们想让别人使用这个证书,必须要到导出一个.p12文件,
![](https://i-blog.csdnimg.cn/blog_migrate/beb755f6dde5cb19b06ea9c76f41c773.webp?x-image-process=image/format,png)
最左边带有三角尖头的就代表时有私钥的证书文件,这个时候我们就可以右击选择导出.p12文件,他其实就是一个包含了私钥和证书的备份文件,或者可以理解为副本。这样一个证书就可以给很多人使用了
PS:如何创建CSR文件http://www.jianshu.com/p/5ba97e2b0045
如果我们想知道开发者中心的证书对应着我们钥匙串里面的证书,只需要比对它们的过期时间,一般来说证书的有效期只有一年,而且因为中美两国的时间差等原因,一般来说钥匙串里的证书和开发者中证书的过期时间最多只相差一两天,大多是相差一天或刚好吻合。
二.证书
证书分为Development测试(开发)证书和Production发布证书,分别用来真机测试和发布(打包AdHoc版ipa),首先一般来说测试和发布证书一般只允许创建两个,但是公司开发者帐号允许创建三个发布证书,个人开发者帐号没有使用过不清楚。之前有人问我是不是发布一个App就要创建一个发布证书,答案无疑是否定的,我们一般创建了一个测试和发布证书就可以给无数个App使用(理论上),但是推送的测试/证书是绑定了一个特定的App,所以他是不同的App就要创建不同的推送证书。而且正在使用(或你电脑安装且正在使用)的证书在被撤销后还有24/48小时的过渡期,这段时间内你不能创建新的对应的测试/发布证书,别人拷贝的.p12文件仍旧可以使用,关于这一点我也不是特别清楚,也是无意中发现的,有知道的可以在下面评论告知,不吝赐教。
三.App ID(bundle identifier)**
App ID即Product ID,用于标识一个或者一组App。
App ID应该和Xcode中的Bundle Identifier是一致(Explicit)的或匹配(Wildcard)的。
App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier(Company ID)作为前缀(Prefix/Seed),一般不超过255个ASCII字符。
App ID全名会被追加Application Identifier Prefix(一般为TeamID.),分为两类:
Explicit App ID:唯一的App ID,用于唯一标识一个应用程序。例如“com.apple.garageband”这个App ID,用于标识Bundle Identifier为“com.apple.garageband”的App。
Wildcard App ID:含有通配符的App ID,用于标识一组应用程序。例如“”(实际上是Application Identifier Prefix)表示所有应用程序;而“com.apple.”可以表示Bundle Identifier以“com.apple.”开头(苹果公司)的所有应用程序。
一旦bundle id在开发者帐号注册以后就无法被注册了,一般你在此注册就会提示错误,所以在免证书测试的时候最好要注意不要用你即将上架的bundle id真机测试,
一般我们上架了一定要选择Explicit App ID,Wildcard包含通配符的是不允许上架的,因为你的App id是不确定的,App id的作用是将你的证书(包含推送证书)和Bundle Id联系(绑定)起来。另外我们在创建App id的时候还可以选择是否需要开通推送/wallet/iCloud/Vpn等功能,以前用Xcode7时开通了功能不需要设置对应的entitlements文件审核也可以通过,但是现在Xcdeo8开通的功能不设置的话会出现构建版本失效,所以你只要开通你需要的功能即可。另外一个星期只能创建特定值以内的App ID(具体多少不清楚了) 三.设备(Device)
Device就是运行iOS系统用于开发调试App的设备。每台Apple设备使用UDID来唯一标识。
iOS设备连接Mac后,可通过iTunes->Summary或者Xcode->Window->Devices获取iPhone的UDID(identifier)。
Apple Member Center网站个人账号下的Devices中包含了注册过的所有可用于开发和测试的设备,普通个人开发账号每年累计最多只能注册100个设备。
Apps signed by you or your team run only on designated development devices.
Apps run only on the test devices you specify.
本文的Devices是指连接到Xcode被授权用于开发测试的iOS设备(iPhone/iPad)。
另外用户要向清除掉一些已注册的UDID需要等到苹果帐号续费后帐号更新配置的时候删除才有效,否则你即使删除了其实它也会占用你的名额(100个)。
另外,当我们每次添加了新的udid相让新的设备可以安装并使用,我们都需要修改齿轮文件把新的设备添加进去生成新的齿轮文件,然后下载并使用新的。 四.齿轮文件(Provisioning Profile)
齿轮文件又名配置文件/授权文件,因为看起来像齿轮所以我称呼为齿轮文件。齿轮文件文件包含了上述的所有内容:证书、App ID和设备**,
![](https://i-blog.csdnimg.cn/blog_migrate/c984ad3814739232f3f2150576b88187.webp?x-image-process=image/format,png)
它的作用就是将它们紧密的联系在一起。
一个Provisioning Profile对应一个Explicit App ID或Wildcard App ID(一组相同Prefix/Seed的App IDs)。在网站上手动创建一个Provisioning Profile时,需要依次指定App ID(单选)、证书(Certificates,可多选)和设备(Devices,可多选)。用户可在网站上删除(Delete)已注册的Provisioning Profiles。
Provisioning Profile也分为Development和Distribution两类,有效期同Certificate一样。
![](https://i-blog.csdnimg.cn/blog_migrate/93c99577b2b2a20e363509f5b3821cf6.webp?x-image-process=image/format,png)
测试版齿轮文件一般用于真机测试,发布版齿轮文件分为AppStore和Ad Hoc两种,分别对应着发布和打包Ad Hoc版ipa包,一般测试版齿轮文件可以添加所有的测试证书,它们都是有设备限制的,这一点企业帐号也是相同的。而使用发布证书发布到App Store或者打包Ad Hoc版ipa包只能选择唯一的发布证书(分别对应着App Store 和Ad Hoc齿轮文件),所以我们需要我们钥匙串里面安装的发布证书,如果选错了最后一定提示你的证书有效但是没有安装到你的电脑本地,提示你重新创建一个新的或者导入对应的发布证书.p12文件。
![](https://i-blog.csdnimg.cn/blog_migrate/826e0d5881f4394818c9872a6aef12c3.webp?x-image-process=image/format,png)
我按照顺序从上到下讲解这四个
1.Save for iOS App Store Deployment
保存到本地 准备上传App Store ,使用的是App Store齿轮文件
2.Save for Ad Hoc Deployment
保存到本地 准备在账号添加的可使用设备上使用(具体为在开发者账户下添加可用设备的udid),该app包是发布证书编译的,即打包Ad Hoc包时使用Ad Hoc齿轮文件使用的,由设备限制
3.Save for Enterprise Deployment
这种主要针对企业级账户下 准备本地服务器分发的app,没有设备限制(企业帐号专用
4.Save for Development Deployment
针对内部测试使用,主要给开发者的设备(具体也为在开发者账户下添加可用设备的udid)。该app包是测试证书证书编译的,有设备限制
![](https://i-blog.csdnimg.cn/blog_migrate/9b5e0705c9aa328de0312d99ec0a1286.webp?x-image-process=image/format,png)
App id就是我们之前注册的App id,
Certificates一般来说测试的齿轮文件可能有多个,因为她是多选,但是发布的齿轮文件时单选,只会显示1
Devices对应着我们的添加的did的设备,如果为0那只有两种可能,一个是发布到AppStore使用,还有一个是打包企业包使用,它们没有设备限制也就是这里体现出来的,这个地方数字为几意味着对应的那些设备可以安装并使用你的App,否则即使你安装了也会出现闪退导致无法使用
最后感兴趣的还可以看下这个http://www.cnblogs.com/wangyang1213/p/5209119.html