Provisioning Profile
什么是Provisioning Profile?
从字面翻译,Provisioning Profile就是配置文件的意思,它在开发者账号体系中所扮演的角色也是配置和验证的作用。如果你有开发者账号,可以打开你的开发者控制台,在首页可以看到如下界面。如果你没有开发者账号,那就看图片意会吧!:)
现在开发者控制台相比之前在界面布局上已经进行了改版,更加直观,也更加美观。红框标记的地方我们可以看到Provisioning Profile文件夹图标,点击进去,就来到了所有证书和配置文件的管理控制中心。我们可以在最下方看到标记为Provisioning Profiles的区域,这里就是我们管理iOS或者Mac应用程序Provisioning Profile的地方啦。
点击右上方的“+”号会提示我们新建什么类型的Provisioning Profile,可以看到,Provisioning Profile分为两大类,一类是Development,一类是Distribution,前者是创建我们在开发环境下的配置文件,不能进行发布,后者可以创建发布到App Store或者以Ad Hoc发布的配置文件。创建Development下得Provisioning Profile后,我们可以在真机上对App进行开发和调试。在Distribution下的Provisioning Profile,我们可以选择创建发布到应用商店的配置文件,另外就是Ad Hoc方式下的配置文件。Ad Hoc是指在不发布到App Store的情况下,可以将发布状态下的App装在指定的一些真机上进行测试,但是这里指定的设备数量是有限的(99台)。
到这里,我们已经知道Provisioning Profile有两类,一类是开发状态下的,一类是发布状态下得。那Provisioning Profile里面究竟有些什么东西呢,我们接着往下看。
我们选择创建一个Development状态下的Provisioning Profile,首先需要我们填写App ID,我们知道,每一个应用都有唯一的App ID,这个ID就好比我们应用程序的身份证,通过下图可以看到关于App ID的构成。
现在,App ID由一个Apple产生的Team ID作为前缀,后面跟的其实就是我们在Xcode中设置的Bundle ID,其实就相当于包名(Android里面也是利用应用包名来唯一标记App)。通过这种方式,我们就将一个指定的App与一个Provisioning Profile进行绑定了,也就是说这个Provisioning Profile只能作为这一个App的开发配置文件。那我们每一次开发新应用的时候就得重新来新建Provisioning Profile,这显得非常麻烦,好在Apple已经为我们想到了这一点,我们可以通过通配符来标记App ID,这样我们可以只创建一个开发配置文件就可以来测试所有我们开发的App了,下图是使用通配符标记的App ID格式。
关于App ID的创建,可以到证书配置管理控制台Identifiers模块下App IDs栏目下进行创建,这里就不再详细赘述了。App ID选好了,我们继续下面的步骤。这时,提示会要求我们选择Certificates。
那什么是Certificates呢?那简单的说,Certificates就是一个来验证你是合法开发者的证书文件,这里通常是对你进行开发的Mac进行授权。我们可以选择一个经过验证的Certificate来配置这个Provisioning Profile。选择完毕后我们就可以进行下一步了。这时,提示会要求我们选择Device。
选择Device也就是说我们希望这个Provisioning Profile对哪些设备进行授权,只有选中的设备,才能使用这个配置文件来进行真机调试,否则,装了也没有,因为别人压根没对你授权。设备选择完毕后,我们继续下面的步骤,这时,提示就会要求我们输入这个Provisioning Profile的名字了。
在统计信息中我们可以看到,Provisioning Profile的类型为Development类型,选择了一个指定的App ID,指定了一个Certificates,另外指定了一台设备,这样,我们的Provisioning Profile就配置完成了。这时到配置文件列表我们可以看到刚刚生成的这个配置文件,显示为Active已激活,另外要说的是,每一个Provisioning Profile都有一个有效期,通常是一年,过期后就得重新验证一下,不需要重新生成,只需手动验证一下即可,点击查看详情。
这里,我们可以看到比之前的详情更丰富的信息,其中Enabled Service中例举的信息是在配置App ID的时候选择的,作用是为这个配置文件申请诸如消息推送和应用内购买的权限。另外,Expires指明了这个配置文件的过期时间,最后Status就显示状态为Activie,如果不可用的话会显示Invalid。如果发现配置文件过期,就像之前说的,手动验证一下即可。最后,可以将Provisioning Profile下载到本地,下载完成后,我们就可以看到一个扩展名为.mobileprovision的文件,打开Xcode,连上设配,双击这个配置文件,这个配置文件就被安装到我们的测试设备中了,通过Xcode的Device窗口可以查看这台测试设备所有的Provisioning Profile。到这里,我们已经知道了Provisioning Profile是用来做验证授权的,也知道了它其实是装在我们的测试设备上的,当然,你也知道了如何去创建它。那么,接下来我们就来看看Provisioning Profile的内部结构图。
这里,拿Ad Hoc方式的配置文件来举例,按照之前说的,Ad Hoc能够在不发布到App Store的前提下允许指定的设备安装App,那这个配置文件中肯定就包含Devices信息,同时也包含App ID,另外还包含一个发布状态下的Certificate。到这里,或许你会有疑问,正式发布状态下的配置文件应该是怎样的,首先要说的是,正式发布App时,Provisioning Profile是不需要提前安装到用户手机上的,如果这样的话,那估计Apple就傻了。在正式发布到Apple Store时,发布状态的Provisioning Profile已经以签名的方式和App进行了绑定,有一点不同的是,发布状态的Provisioning Profile不需要指定Device,因为它不知道将被哪些设备使用,下图是发布状态下的配置文件结构。
最后,如果是Company类型的开发者账号,可以生成一个供团队使用的Team Provisioning Profile,通过这个配置文件,团队内成员可以共用一个配置文件来进行开发调试,当然,App ID得指定成通配类型的。
这里需要注意的是,每一个苹果开发者账号只有一个Agent权限,就就是说,最终真正有权限发布到App Store的人就是这个开发者账号的拥有者,他的身份类型就是Agent,另外还有两种身份类型,一种是Admin,一种是Member,关于更多团队账号角色的信息,你可以参考这里。
总结
通过上面的内容,你是否已经能够回答最开始提出的问题呢?什么是Provisioning Profile?这里做一个简单的总结:
- Provisioning Profile是一个安装在测试设备上的配置文件,文件扩展名为.mobileprovision
- Provisioning Profile有两种类型,一种是Development、一种是Distribution,分别对应开发状态和发布状态的配置文件
- 配置Provisioning Profile之前需要先设置好Certificates、App ID、Devices等信息
- Provisioning Profile的有效期为12个月,过期后得手动验证方可继续使用
内容就到这里了,要想理解的更透彻,还是实际去操作和实验来的快。如果你是Xcode5了,进到Preferences里面,选择Accounts选项卡,将你的Apple ID添加到Xcode里面,然后到工程General和Build Settings里面去折腾吧。后面的事,你就自己琢磨吧!:)
原文地址: http://ryantang.me/blog/2013/11/28/apple-account-3/
版权声明:保持署名-非商用-禁止演绎 | Creative Commons BY-NC-ND 3.0 |
Provisioning Profile的更多相关文章
- iOS 真机测试时报错:Provisioning profile "iOS Team Provisioning Profile: XXX” doesn't include the currently selected device “XXX”.
这几天因工作需要,去给客户演示iOS项目打包的过程.之前演示都是顺利的,但后来客户自己操作时打电话说遇到了问题,出现报错. 就过去看了一下,发现一个很陌生的错误提示: The operation co ...
- Xcode 如何删除过期的Provisioning Profile文件
Xcode 中所有的Provisioning Profile文件,都在 ~/Library/MobileDevice/Provisioning Profiles 这个文件夹下:进入该文件夹,按照文件 ...
- Your build settings specify a provisioning profile with the UUID, no provisioning profile
在Archive项目时,出现了“Your build settings specify a provisioning profile with the UUID “”, however, no suc ...
- 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
1.概念介绍 如果你拥有一个开发者账户的话,在iOS Dev Center打开Certificates, Indentifiers & Profiles,你就可以看到如下的列表: Profil ...
- [转载]iOS Provisioning Profile(Certificate)与Code Signing详解
原文:http://blog.csdn.net/phunxm/article/details/42685597 引言 关于开发证书配置(Certificates & Identifiers & ...
- <转>关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
转自:http://www.cnblogs.com/cywin888/p/3263027.html 刚接触iOS开发的人难免会对苹果的各种证书.配置文件等不甚了解,可能你按照网上的教程一步一步的成功申 ...
- (转)关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
转自http://www.cnblogs.com/cywin888/p/3263027.html 刚接触iOS开发的人难免会对苹果的各种证书.配置文件等不甚了解,可能你按照网上的教程一步一步的成功申请 ...
- 关于IOS的证书、App ID、设备、Provisioning Profile详述
首先,打开developer.apple.com ,在iOS Dev Center打开Certificates, Indentifiers & Profiles认识一下基本结构.列表就包含了开 ...
- Certificate、Provisioning Profile、App ID
关于 Certificate.Provisioning Profile.App ID 的介绍及其之间的关系 2014-03-13 15:26 13416人阅读 评论(1) 收藏 举报 目录(?)[ ...
- 理解Certificate、App Id、Identifiers 和 Provisioning Profile
做真机测试的时候,按照网上的流程,走通了,当时没有注意各种证书等的意思.现在做消息推送,需要各种证书.APP ID信息,为了更好的理解这个过程,所以整理了网上关于证书等的相关资料.方便自己和有需要的朋 ...
随机推荐
- 2015ACM/ICPC亚洲区长春站 J hdu 5536 Chip Factory
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- 数据挖掘十大经典算法[0]-K-Means算法
K-Means算法的输入N,K和一个size为N的向量组vector.输出K个两两互不相交的向量组.其本质是将给定的向量组划分成K个类别,使得同类别的向量相似度比较大,而不同类别的向量之间的相似度较小 ...
- lua ipairs
tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = ...
- BZOJ3165 : [Heoi2013]Segment
建立线段树,每个节点维护该区间内的最优线段. 插入线段时,在线段树上分裂成$O(\log n)$棵子树,若与当前点的最优线段不相交,那么取较优的,否则暴力递归子树. 查询时在叶子到根路径上所有点的最优 ...
- 4.1 avd
6.接着我们回到文件夹界面,运行 AVD Manager.exe. 7.打开 AVD Manager.exe后,点击“New"创建新的模拟器: 8.创建一个新的 Android Virtua ...
- Leetcode 第一遍刷完
2014/10/15 Leetcode第一刷总算结束,时间拖太长了,希望第二遍能快一点,争取一个月能刷完第二遍??哈哈哈哈
- 低调的华丽,Windows Server 2003 ... 写给厌倦了XP,但又纠结于vista/win7花哨的童鞋(转)
发布于2001年10月25日的windows XP 距今已近8年 时间, 微软从没有一个操作系统能像XP那样 坚挺这么久,婚姻既有7年之痒,何况用了8年XP的广大 同学,但07年发布的vista似乎 ...
- 兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览
html代码: <div id="divPreview"> <img id="imgHeadPhoto" src="Images/H ...
- Qt中QUdpSocket序列化问题
写了一个小的Qt网络程序,很简单,发送的网络消息除了字符串还有一个结构体.很简单的想到用memcpy()函数来将数据序列化为BYTE数组从而实现网络传输. 序列化是Java中一个概念,C中并没有,C+ ...
- sql对应C#的类型