iPhone Provisioning Portal问题的一点总结

来源:互联网 发布:洞主零食的淘宝店铺 编辑:程序博客网 时间:2024/06/05 07:25

http://springox.w18.net/2011/04/14/iphone-provisioning-portal问题的一点总结/


一、概述:

在概述有关app在iPhone上运行时的iPhone Provisioning Portal问题时,我们参考一下apple开发网站上(http://developer.apple.com/)的一张图片,

从图片中我们可以看到,将一个app的源代码build进一个iPhone中并运行起来需要具备这样几样东西,

1、我们需要目标设备(就是安装app的iPhone)的唯一标识,它是一个全球唯一的device ID,确保这是一台合法运行该app的iPhone ;

2、我们需要跟该app开发者相对应的信息凭证文件,我们称它为Certificate(开发者证书),这个Certificate中包括有属于开发者的数字签名以及其它的信息,其中数字签名是用于将文件build进iPhone时加密解密使用,build的时候将文件加密,在iPhone里面,iOS将基于相同的Certificate信息进行解密操作,确保该文件合法、安全、完整,跟其它许多地方的数字签名一样,该数字签名基于非对称密钥的加密方式,所以拥有数字签名信息的 Certificate就包含有开发者可以公开的公钥(与该Certificate配对的私钥则是申请这套数字签名时独立分配给开发者的,没有放入到该Certificate当中);

3、我们需要针对该app的唯一标识,在app Store上,在push service中,该标识是有它的作用的,我们称为app ID;

4、我们需要确定我们build的app将以什么样的方式存在,或者说app以什么样的方式发布,debug/release模式、distribution模式,目标设备是什么,是iPhone还是app Store,不同的选择,build的过程乃至build后的处理都会不同。

5、从原理上讲,将app的源代码从Xcode build进iPhone并运行起来的过程中,我们需要的就以上几个信息了,然而,为了,管理上的方便,我们还拥有另一个文件,我们称它作provisioning profile,假想一下,假如我们有批量的合法iPhone要运行这个app,每次build的时候都填写一下iPhone的device ID么,再假想一下我们有批量的app要build,每次build的时候都填写一下长长的app ID,甚至不同的开发者需要指定不同的Certificate,这显然不太方便,于是有了provisioning profile文件,它可以将以上的几个信息以批量的方式组织在一起(当中还包括发布方式),当我们需要的时候,我们选择相应的provisioning profile文件参与build即可。我们可以针对一个Certificate提供provisioning profile,它包含批量的device ID和app ID,我们也可以针对一个app ID提供provisoning profile,它包含批量的Certificate和device ID,我们甚至可以针对一个device ID提供provisioning profile,这就为我们在build源代码到iPhone上运行提供很多的便利。另外, 在app发布模式的控制上,apple也是基于provisioning profile文件来实现的,比如,debug模式是为调试需要而设计的,因此,provisioning profile时间上的有效性就比较短,一般在一到三个月之间,distribution则需要有专门的申请,确保apple通过并愿意为其提供相应的服务(包括push service)。 值得提一下的是,由于Certificate涉及安全性问题,所以,provisioning profile并没有完整的Certificate信息,Certificate的相关信息和数字签名的公钥包含在provisioning profile里面,私钥则由开发者自行保管,build的时候,Xcode基于provisioning profile里面的Certificate信息选择相应的私钥进行文件加密,这样,只要私钥是安全的,我们有理由相信文件不会受到篡改。由以上的描述,我们可以看出,provisioning profile文件在app的build、发布以及运行都起着重要作用。

二、准备:

那么,为了完成一次源代码从Xcode build进iPhone并运行的操作,我们需要什么样的准备,对应着上面所概述的,我们需要准备如下的信息或者说文件:

1、我们需要在开发管理系统里面(这是一个B/S模式的互联网服务系统)添加我们的目标设备的device ID,那么,一般来讲,当目标设备通过专用数据线连接到计算机时,你可以通过iTunes管理该目标设备,同时也能通过iTunes获取device ID,然后,手动添加到开发管理系统上,而且只有Team的管理员拥有这个权限;

2、Certificate可以向Team的管理员申请,当申请通过以后,在开发管理系统上就有可供下载的Certificate,下载到个人的计算机后,通过双击Certificate文件就能启动相应的管理工具进行管理;

3、app ID可以由Team管理员通过开发管理系统向apple提交申请的方式获得;

4、剩下的就是一个provisioning profile的获取, provisioning profile分一般的provisioning profile和distribution provisioning profile两类,这两类的获取方式有所不同,并且,第一类provisioning profile是为debug/release模式服务,第二类则是为distribution模式服务的,另外,如上面所述,provisioning profile绑定着device ID、certificate、app ID等信息,在第一类provisioning profile里,这些信息都是可以编辑的,获取provisioning profile后可将其下载至计算机双击文件启动Xcode加以管理;

三、操作:

这里讲述一下完成一次源代码从Xcode build进iPhone并运行的操作,

1、对于一台没有进行过debug的iPhone而言,我们首先要为其开启开发模式,而且当iOS升级刷新后,我们均要进行此操作,否则Xcode将会报:“无法找到同provisioning profile匹配的设备”的错误;

2、开发用的计算机上(Xcode运行的机器),我们必须确保所需要的Certificate和provisioning profile已经安装完成,随时可供使用;

3、在相应的project中,我们必须选择此次build的模式(debug、release、distribution),并且在Targets标签中的目标项的info信息里面指定相应的provisioning profile,注意,应该为不同的build模式选择不同provisioning profile。


原创粉丝点击