ios开发证书,描述文件,bundle ID的关系

作者: huangman | 来源:发表于2016-04-08 16:18 被阅读22742次

    苹果为了控制应用的开发与发布流程,制定了一套非常复杂的机制。这里面的关键词有:个人开发者账号,企业开发者账号,bundle ID,开发证书,发布证书(又叫“生产证书”),开发描述文件,发布描述文件,推送证书等...。初级开发者很难理解这中间的关系和作用。下文就对上述列出的关键内容和它们的关系做个详细介绍。

    1. 开发者账号

    开发者账号其实就是apple id,只不过要成为开发者,需要去苹果开发者中心激活开发权限。激活开发者账号分为三种,个人,公司和企业。这三种账号各自有些区别,下表是他们主要区别的对比:

    账号类型 支持applestroe上架 测试设备数量 申请费用 申请需要
    个人 100 99$
    公司 100 99$ 邓氏码
    企业 不限 299$ 邓氏码

    所以如果应用需要上appstroe,就要创建个人或者公司类型的账号,如果只想内部发布,就可以申请企业账号。个人账号和公司账号的区别就是公司账号能邀请多个账号,他们可以和你共享资源协同开发此应用,而不需要总是问你要你的账号使用。

    2. bundle ID

    bundle ID可以翻译成包ID,也可以叫APP ID 或应用ID,它是每一个ios应用的全球唯一标识。无论代码怎么改,图标和应用名称怎么换,只要bundle id没变,ios系统就认为这是同一个应用。每开发一个新应用,首先都需要到member center->identifier->APP IDS去创建一个bundle id。但是bundle id分为两种:

    1. Explicit App ID(明确的APP ID),一般格式是:com.domainname.appname。这种id只能用在一个app上。每一个新应用都要创建一个。
    2. Wildcard App ID(通配符APP ID), 一般格式是:com.domainname.*。这种id可以用在多个应用上,虽然方便,但是使用这种id的应用不能使用通知功能,所以并不常用。

    3. iOS Certificates

    ios certificates就是证书。它的作用就是证明你的mac具有开发或发布某个开发者账号下应用的权限。而且证书还分成两种,一种是开发证书,也叫Development certificate; 另一种是发布证书或叫生产证书,英文名叫Production certificate。

    • development certificate
      开发证书是证明你的mac具有开发和真机调试你的程序的东西。但是每个证书关联着一个开发者账号,也就是说,你只能使用这个证书开发这个账号底下的应用,它是通过bundle id来知道该应用是不是属于自己的账号。所以,每次为一个开发者帐号开发应用,就得需要这个账号创建的开发证书。

    • Production certificate
      生产证书是证明你的mac是否具有发布应用的权限。在archive到appstore的时候,必须有生产证书,否则时上传不成功的。

    • 根证书
      无论是开发证书还是生产证书,都必须从根证书上派生。根证书就是根mac产生的证书,menber center上保存的那个证书就是根证书,它只能安装在创建它的那台mac上,其他的开发mac必须从那台根mac上导出证书使用。也就是所有的子证书都只能从根证书派生而来。

    4. iOS Provisioning Profiles

    iOS Provisioning Profiles也叫描述文件,它用来标识某个设备是否具有安装某个应用的权限。描述文件分为开发描述文件和发布描述文件。其中发布描述文件又分为临时发布描述文件和正式发布描述文件。

    1. 开发描述文件(develop provisioning profile)
      开发描述文件,创建它需要bundle ID + 开发证书 + 测试设备(在devices中添加); 编译的时候必须三者对应,否则编译器会报错。
    2. 临时发布描述文件(distribution ad hoc)
      临时发布描述文件是用来在有限设备上发布的。创建它需要bundle ID +发布证书+发布设备,编译时也必须三者对应。
    3. 正式发布描述文件(distribution appstore/distribution ad house)
      个人账号和企业账号创建的正式发布描述文件是不同的。因为个人账号是在appstrore上发布,所以创建的是distribution appstore描述文件,而企业账号只能内部发布,所以创建的叫distribution ad house描述文件。但是它们创建所需要的东西都是一样的:bundle ID + 发布证书。 因为他们是在不确定的设备上安装的,所以不需要选择设备。

    相关文章

      网友评论

      • SHICHUAN:I'm not sure I understand!!"每次为一个开发者帐号开发应用,就得需要这个账号创建的开发证书",这是什么表达??????
        "开发证书是证明你的mac具有开发和真机调试你的程序的东西。但是每个证书关联着一个开发者账号,也就是说,你只能使用这个证书开发这个账号底下的应用,它是通过bundle id来知道该应用是不是属于自己的账号。所以,每次为一个开发者帐号开发应用,就得需要这个账号创建的开发证书。"
      • Beyond无状态:这里的APP ID需要跟xcode里的bundle Id 一样吗
      • 小毛纯一郎:说漏了一点!刚刚想起!证书要把推送证书除开!因为推送证书跟一般的开发证书和发布证书不一样!因为它并没有包含在描述文件中!所以证书中会让你选择bundle ID!。
      • 小毛纯一郎:真正确定你有开发和发布这个应用的是描述文件!它联合了证书(Mac + apple Id), bundle id,如果是开发的话还需要device,它的意思是:Mac电脑上可以测试运行在device这部手机上开发 标识符为bundle id 的apple id账号 的应用程序!生产发布也同理,虽然有点拗口,单它确实发应了各个东西的职责和能力!所以证书和 bundle id根本没有办毛线的关系。
      • 小毛纯一郎:发现你对证书的理解有误吧!你在制作证书的时候选了bundle ID吗?那你有十个应用,你是不是要制作十个开发证书和发布证书啊?根本不可能,一台Mac 电脑只需要一个开发证书和发布证书就可以做n个应用了。证书和bundle ID是没有任何的关系关系的!而证书只跟apple ID 和你的电脑有关,因为证书包含了你上传的钥匙串的请求匹配证书。证书只是证明你的这台电脑可以对apple id具有开发和发布的能力而已。他只是绑定Apple id和电脑直接的关系!
        小毛纯一郎:@dominghao 恩恩
        dominghao:没毛病.你说的没毛病.
        huangman:@风野烂漫 我并没有说证书跟bundle id 有关联啊啊,我只说跟开发者账号和mac有关系,开发者账号就是Apple ID 啊,只是证书需要通过bundle id 来反向获取该bundle id 是否是在他关联的apple id 之下。
      • e73f87fb0695:问个问题,我们开发的时候是用的企业账户打包的,现在要上appstore。能不能不修改bundle id 换成公司账号打包啊?
        SMFly:同一个bundle id 能用不同的证书和配置文件吗?
        e73f87fb0695:@huangman 同一个bundle id 可以同时用企业证书和公司证书打包吗?
        huangman:当然可以
      • 超_iOS:如果加上推送证书就更好了.请问发布时使用推送证书么?请教
        huangman:@_超 推送证书不是给app 用的,是给推送服务器用的,打包的时候跟推送证书没关系,只是在创建id 的时候你先把推送功能开启就行了
      • UncleFool:请问,team的作用是什么?
        huangman:@UncleFool team的作用是方便协同开发,不必把账号密码公开给所有人,保证账号安全,方便管理
      • Coder东:企业和个人的要分开的,不能用同一个bundle id
        huangman:@随风流年 这个是自然的
      • 崇圣道瞳䄹:很有用,帮到了我,谢谢!
      • 知行合一认知升级:没买证书的,没有app id这几个按钮。我找了好久,原来买了,才有这几个界面。我说怎么找不到。。。。当我看到此文时才明白。太谢谢了。

      • ntms_今晚打老虎:喜欢不够,再来说两句!谢谢
        fe08d739313f:喜欢不够,再来说两句!谢谢
        huangman:@ntms_今晚打老虎 感谢支持,文章写的比较粗略!

      本文标题:ios开发证书,描述文件,bundle ID的关系

      本文链接:https://www.haomeiwen.com/subject/uvsylttx.html