ios开发中Certificate,AppId和Provisioning三者的含义和联系

wsmrcool 2013-02-06

Apple的AppStore是现今发展和生态环境最好的移动应用市场,目前还没有“之一”。

虽然移动应用市场仍处于几分天下胜负未定(也许没有所谓的胜负)的进程中,但apple的品牌价值,appstore

神奇的造富历史,还是吸引着无数开发者投入其中。apple独有的带有教主个性烙印的整个运营模式,开发规范和

流程,是每个进入"theApps"世界开发者的必修课。而理解Certificate,AppId和ProvisioningProfile三者的概念和理清

他们之间的关系是掌握开发,发布流程的重要基础。一些重要功能,比如In-AppPurchase内置付费,GameCenter等等

都离不开对着几个概念的明晰。

====================大家好,我是华丽而低调的分割线=================

首先,加入ios开发者计划,给苹果99刀之后,你就可以开始享受它的折磨了,交钱能做什么呢?

很简单:开发,测试和发布应用。

硬件方面:一台macos的电脑做开发,起码一部Ios设备做真机测试。至于是黑苹果,金苹果就各人自便,

不过为了少折腾,建议还是用真苹果,因为开发本身就够折腾的了。

注册成为开发者是第一道关,网上教程也很多,各位自理。

假设你已经和我一样成功缴费,加入了开发者计划,那么先打开https://developer.apple.com/看看99美元一年有哪些菜

进入用户中心,看到如下界面

本文介绍的就是管理证书和授权文件,点击"iOSProvisioningPortal",界面如下:

点击左侧导航栏的链接,依次讲讲,

Certificates

证书是你有权利开发的凭证,是开发者的一种标识,相当于身份证,一个开发者账号只有一套。

一套含两个,Development和Distribution。

其中Development证书提供开发者在电脑上真机调试的权限,可以制作多个副本分发到多台电脑。

Distribution证书给开发者提供发布ios程序的权限,也就是说有了这个,你就有权力发布程序到AppStore去了,

当然这只是万里长征的第一步。只有一个,不能制作副本分发到多台电脑。

Devices

个人认为ios和android在开发上最大的区别,

安卓系统默认就开放了真机开发调试,任何人任何一台机器,不需要任何认证,即可以在真机上调试运行程序。

ios不行,你得交钱,然后把想私自安装程序的设备到这里注册!可以注册一百台设备,其实数量完全够用,只是交费是个门槛。

AppIDs

AppID是一个很关键的概念,顾名思义就是一个应用的标识,没错,每一个应用都有一个标识,一一对应。

新建一个AppID,看看有哪些内容,点"NewAppID"

需要填写的就两项Description和BundleIdentifier,

Description就是对这个id的描述,一个名字,就像别人喊刘德华,大家很快能对上号,要是喊一串身份证号码,估计都晕了。

BundleIdentifier才是程序的唯一标识,官方给的命名建议是使用域名倒排,比如你公司或团队的域名是somecom.com,这个应用

叫bingo,那么可以叫somecom.com.bingo。怎么命名是自由,只是这种方式比较容易保证AppID的唯一性。

当然AppID必须是唯一没有被其他应用使用过的。

填好AppID后就能看到它的实时状态了:

Provisioning

provisioningprofile(以下简写为profile)是授权文件,它定义了什么设备能安装运行什么程序。

从这就可以知道,一个profile由设备标识和程序标识(AppID)两部分组成。

可以看出,profile和Certificate(证书)一样,也分为Development和Distribution两种。

Development用于确定哪个程序(AppID)能在哪个设备上调试。

Distribution用于确定哪个程序(AppID)能安装发布到哪个设备。

先新建一个Develop类型的profile,图中注释很容易懂。

再创建一个Distribution类型的profile,

发布类型又分为两种:

1,AppStore:直接发布到appstore,表示该程序已经不需要再发布到其他设备测试了,将直接发布到appstore,此时下面的设备列表是

灰色不可选的(即将面向整个市场了,不存在只能装在某几台设备的问题)

2,AdHoc:是发布版本,但是还要部署到一些机器上测试,此时下面的设备列表将变为可选,选择需要进行测试的设备即可。

总结一下:

Certificate对于开发者账号来说是独一份(分Development和Distribution两种),

AppID对于一个应用来讲是独一份,不依赖其他东西就可以生成一个AppID,

Provisioningprofile是连接程序和设备的桥梁,它规定了哪个程序能"安装or调试"到哪些设备,

所以一个Provisioningprofile是由AppID和设备列表组成的。

对于Development类型和Distribution下AdHoc类型的Provisioning来说,设备列表就是从注册的设备里选出的,是有限的,

而对Distribution下AppStore类型的Provisioning来说,设备列表是近乎无限的,世界上ios设备有多少,它就有可能有多大

相关推荐