ios开发中Certificate,AppId和Provisioning三者的含义和联系
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设备有多少,它就有可能有多大