什么是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的更多相关文章

  1. iOS 真机测试时报错:Provisioning profile "iOS Team Provisioning Profile: XXX” doesn't include the currently selected device “XXX”.

    这几天因工作需要,去给客户演示iOS项目打包的过程.之前演示都是顺利的,但后来客户自己操作时打电话说遇到了问题,出现报错. 就过去看了一下,发现一个很陌生的错误提示: The operation co ...

  2. Xcode 如何删除过期的Provisioning Profile文件

    Xcode 中所有的Provisioning Profile文件,都在 ~/Library/MobileDevice/Provisioning Profiles  这个文件夹下:进入该文件夹,按照文件 ...

  3. 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 ...

  4. 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系

    1.概念介绍 如果你拥有一个开发者账户的话,在iOS Dev Center打开Certificates, Indentifiers & Profiles,你就可以看到如下的列表: Profil ...

  5. [转载]iOS Provisioning Profile(Certificate)与Code Signing详解

    原文:http://blog.csdn.net/phunxm/article/details/42685597 引言 关于开发证书配置(Certificates & Identifiers & ...

  6. <转>关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系

    转自:http://www.cnblogs.com/cywin888/p/3263027.html 刚接触iOS开发的人难免会对苹果的各种证书.配置文件等不甚了解,可能你按照网上的教程一步一步的成功申 ...

  7. (转)关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系

    转自http://www.cnblogs.com/cywin888/p/3263027.html 刚接触iOS开发的人难免会对苹果的各种证书.配置文件等不甚了解,可能你按照网上的教程一步一步的成功申请 ...

  8. 关于IOS的证书、App ID、设备、Provisioning Profile详述

    首先,打开developer.apple.com ,在iOS Dev Center打开Certificates, Indentifiers & Profiles认识一下基本结构.列表就包含了开 ...

  9. Certificate、Provisioning Profile、App ID

    关于 Certificate.Provisioning Profile.App ID 的介绍及其之间的关系 2014-03-13 15:26 13416人阅读 评论(1) 收藏 举报   目录(?)[ ...

  10. 理解Certificate、App Id、Identifiers 和 Provisioning Profile

    做真机测试的时候,按照网上的流程,走通了,当时没有注意各种证书等的意思.现在做消息推送,需要各种证书.APP ID信息,为了更好的理解这个过程,所以整理了网上关于证书等的相关资料.方便自己和有需要的朋 ...

随机推荐

  1. BZOJ4327 : JSOI2012 玄武密码

    对所有询问串建立AC自动机. 然后将母串在AC自动机上跑,每走到一个点x,从x点出发沿着fail指针能到的所有前缀都是匹配成功的,暴力向上走,碰到走过的就break,这样每个点最多只会被标记一次. 时 ...

  2. BZOJ3251 : 树上三角形

    BZOJ AC1000题纪念~~~ 将x到y路径上的点权从小到大排序 如果不存在b[i]使得b[i]+b[i+1]>b[i+2]则无解 此时b数列增长速度快于斐波那契数列,当达到50项时就会超过 ...

  3. BZOJ3825 : [Usaco2014 Nov]Marathon

    不跳过任何点的路程=dis(l,l+1)+dis(l+1,l+2)+...+dis(r-2,r-1)+dis(r-1,r) 要跳过一个点i,则要最小化dis(i,i+2)-dis(i,i+1)-dis ...

  4. Git 远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  5. Codeforces Round #204 (Div. 2) A.Jeff and Digits

    因为数字只含有5或0,如果要被90整除的话必须含有0,否则输出-1 如果含有0的话,就只需考虑组合的数字之和是9的倍数,只需要看最大的5的个数能否被9整数 #include <iostream& ...

  6. 洛谷 P1008 三连击 Label:水

    题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数. 输入输出格式 输入格式: 木有输入 输出格式: 若干行,每行3个 ...

  7. windows raid mode重新安装系统(win10)

    常规安装模式: STEP 1 进入bios 将高级设置中,引导模式设置为传统(旧模式)模式,一般存在legacy (旧模式),uefi with csm ,uefi without csm 三个模式, ...

  8. Odoo 外协加工产品的实现

    需求,当前有产品A需要讲原料B.C送到加工厂P,由加工厂P加工完成后送回公司,然后再销售给客户. 1.首先,设置产品A的BOM由原料B,C组成,产品A的Route设置为Manufacture,产品A的 ...

  9. [转] - linux下使用write\send发送数据报 EAGAIN : Resource temporarily unavailable 错

    linux下使用write\send发送数据报 EAGAIN : Resource temporarily unavailable 错 首先是我把套接字设置为异步的了,然后在使用write发送数据时采 ...

  10. 【新产品发布】【GK101 10MHz任意波发生器】

    简介: GK101 10MHz掌上任意波形发生器基于多项先进技术,在较小的体积上实现了普通台式仪器才具有的功能.仪器仅手掌大小,实现了80M采样率.10MHz最大频率.10Vpp最高幅度的输出. 仪器 ...