iOS开发个人证书多设备的常用部署-Part1

前段时间,项目的发布证书过期了,于是整理了一番,简单总结一下吧。

初步了解

开发和发布iOS App,必须加入苹果的开发者计划(Apple Developer Program)。

苹果开发者计划,有两种:

  • 个人版(Individual $99/Year)
  • 企业开发(Organization $299/Year)
Apple Developer Program

目前多数个人开发者和一些规模不太大的企业,都是使用个人版。

从开发角度来讲,企业版对于个人版最大的不同在于,可以进行企业发布
企业发布打包的ipa,通过fir.im蒲公英等第三方来发布。
任何人都可以安装这个App,不必通过苹果的审核。

但也是有一些限制,例如证书如果无效了,App就打不开了。
数目好像也有限制。了解的童鞋,请留言。这里不深入。

申请步骤也没什么特别,一步一步按要求填写就OK,这里直接跳过了。申请地址

申请成功后,进入开发主页,点击账户,进入账户主页.

账户主页

点击 Certificates,IDs & Profiles进入证书管理。

三种证书

可以看到证书是分为3种来进行管理,请避免不小心选错的尴尬。

  • iOS,tvOS,watchOS
  • macOS
  • Safari Extension
开发和发布相关

Keys 是新出的一个东西,相关内容如下,这里不作深入。

keys

(翻译)创建一个key可以用来配置和认证一个或者多人苹果服务。不像证书,keys是不会过期的,而且创建后依然可以修改来使用更多服务。更多关于创建和使用keys的信息,可以通过创建key时候,点击相关的链接来了解。

接下来是手动管理signing的部分。
如果你只使用Automatically manage signing,可以跳过该部分。


自动管理

Automatically manage signing会自动创建证书。
由于我们团队的管理是比较开放的(每个童鞋都知道开发者帐号密码)。A童鞋自动创建好的,B童鞋再自动创建,如果数量超出限制,会导致之前的证书被revoke了,无法使用。
所以后来我们团队关闭自动管理,避免相互影响。

手动创建

开发和发布App最基础的三个东西。

  • Certificates (证书)
  • Identifiers (App ID相关)
  • Provisioning Profiles (配置文件)
第一步,先创建App ID。
  • 填App描述,即App名,不过此名非真正显示的App名,只是在配置证书使用的名字。


    app描述
  • 填写App ID,即app的bundle ID

即创建工程的时候,如下图位置的id:


bundle

回过头来想,开发一个App最先应该做的应该是申请App ID,应为App ID在不允许和其他App(整个App Store)重复,具有唯一性。如果重复只能老老实实修改。

App ID

Wildcard App ID 请忽略,想了解用途的戳我。

  • 勾选相关服务
    这里选择了推送和App Group(App Group将在下一篇讲到)。


    服务

Continue , Register,Done 完成App ID的创建。


完成testapp的ID创建
创建证书
  • 选择证书类型


    点击+号开始
选择
Development开发证书
  1. iOS App Development
    不含推送服务的开发证书,该证书与App关联(即创建时需要选择App ID,并仅供选择的App开发使用)。
    如果App不含推送服务,创建改证书。
    如果App含推送服务,可以不创建。
  2. Apple Push Notification service SSL (Sandbox)
    供关联的App使用的,含推送服务的开发证书。
    如果App含推送服务,创建该证书,否则推送服务无法开发测试。
Production发布证书
  1. App Store and Ad Hoc (限制创建两个)
    供所有app开发使用,不和App关联。
    如果原来发布app,可以使用原来的发布证书。

  2. Apple Push Notification service SSL (Sandbox & Production)
    供关联app product环境推送使用,先要安装到电脑中,导出P12文件给后台开发人员使用。

发布证书,有的称之为生产证书,Production,个人习惯叫发布证书,对应develop 和 Release。

简单总结:

含推送App需要3个证书

含推送App需要3个证书

不含推送App需要2个证书
不含推送App需要2个证书

  • 选择App


    选择App
  • 创建证书请求文件


    创建csr

打开Keychain,从证书颁发机构请求证书,很好理解,就是从苹果那请求证书。


keychain

我们选择存到磁盘的方式,填写电子邮件


创建csr

选择存储位置,修改名字,例如testapp.certSigningRequest


csr文件
  • 上传csr文件
    回到网页端,contine后,会要求我上传CSR文件。


    上传CSR
  • 创建成功后,下载,双击安装,然后在Keychain里就能看见了。如果可以展开,含专用密匙,则正常。


    创建成功

    keyChain

什么时候会出现不能展开的情况呢?
当我用A电脑生成csr,请求的证书,下载后,直接安装在B电脑上。就是不能展开。那么怎么在B电脑上也能正常使用证书开发?这个将在下面解答。

使用同样的方法创建两个发布证书,CSR文件可以用同一个。

创建Provisioning Profile文件

Provisioning Profile是依赖证书,App ID,注册设备的配置文件,同样有开发和发布两种。

Provisioning Profile下文将简称为Profile。

点击+添加
  • 选择类型


    选择类型

已注册设备将在下面介绍。

  • 选择App ID


    App ID
  • 选择证书

  1. 如果为这个App创建了多个证书,可能会有多个选择。可能只选择其中一个,多个,或者全选。
  2. 如果名字都一样,不知道是哪个,全选是比较稳的。
  3. 选择多个或者全选,有什么缺点呢?就是其中任意一个证书失效,则这个Profile文件也就失效了。需要重新Generate。

重新Generate并不是重新创建。这个也将在下文提到。

证书
  • 选择设备
    建议全部选上,这里选择就是注册设备。


    选择设备
  • 输入profile的名字,例如testAppDev。
    这名字最好统一几。因为一些无效的profile,xcode并不会自动清除,强迫症患者会觉得不爽。


    profile的名字
  • 完成profile文件的创建。
    profile文件通常不会直接从网页下载,而是在Xcode中下载。


    完成

发布的profile文件,使用同样的方式创建,不同的是,没有选择设备这个步骤,毕竟发布是面向所有设备(App Store)的发布。
Ad Hoc发布方式,即面向已注册设备的发布方式。当我们需要对所有已注册设备发布Release包,适合使用这种发布方式。这种也是需要选择设备的。
Ad Hoc发布方式可以通过fir.im蒲公英等第三方来发布,已注册设备就能扫码安装了。

创建是注意有多个发布证书时,注意选择对应你电脑上安装的发布证书,如下图:


发布证书的选择

细心的童鞋会发现这里怎么有3个,不是限制两个吗?
恩,其中有个无效的。限制有效证书两个,可能会产生无效的证书。

上文提到,App Store and Ad Hoc创建时是不和App关联。那它发布时是怎样和我们开发的App建立关系呢?
恩,就是靠这个profile文件。

三种profile,我们都创建,分别是testAppDev,testAppDis, testAppAdHoc。
补充一句:profile文件貌似没有限制个数,但我们正式开发的时候,还是建议不要太随意。


Ad Hoc

我使用含推送功能的App为例,安装好上面的3个证书,创建好3个profile文件后,我们进入下一步。

Xcode配置

关闭Automatically manage signing
关闭自动管理
下载profile文件
下载profile
选择对应的profile文件
选择profile

如果Signing这块没有报错,那么我们针对这台电脑的配置完毕了。

添加新的注册设备

新的iPhoneX或者是旧的iPhone4S,如果没有注册过,不能安装我们测试的ipa,也不能进行真机调试,真机调试会出现下面错误:

未注册设备

如果有人对你喊,测试包安装不了,第一个先检查设备注册过没有。

在关闭了Automatically manage signing后,需要我们手动注册。

注意,注册设备的数量是有限的。

注册设备
填写信息
Xcode中获取UDID
itunes中获取UDID

填入UDID后,register。


注册

更新profile文件

注册了设备,还要更新那些关联了设备的profile文件,这样profile文件才有效。
回顾一下3个profile文件中哪些关联了设备?

没错,testAppDev和testAppAdHoc。


编辑testAppDev

testAppDev

testAppAdHoc同样的方式重新Generate后,错误变成如下,直接点击Update就OK了。


Update Profile

证书变动,注册设备的disable或者删除,导致profile文件失效,都可以重新Generate一下来重新生效。

推送证书的导出

在keychain中找到对应的推送证书,分别为开发和发布(生产)环境。
右键导出p12文件,会要求你输入密码,并把导出密码两个文件已经交给后台开发人员即可。


推送证书

下一篇,Part2,将主要小结多台mac的部署,App Group以及configuration相关的证书配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • 引言关于开发证书配置(Certificates & Identifiers & Provisioning Prof...
    molake阅读 47,953评论 7 62
  • 引言 关于开发证书配置(Certificates & Identifiers & Provisioning Pro...
    Damen_9527阅读 9,343评论 0 4
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,078评论 25 707
  • 不知道什么时候在什么地方看到一句话:用活页纸记笔记比较方便。于是我购买了第一包活页纸。那还是在开封读研究生的时候,...
    工作与养娃兼顾的女人阅读 957评论 0 0
  • 你若想走 我绝不挽留 时间流逝 一晃已是第四个年头 一切仿佛还在眼前 却已物是人非 昨天还在笑谈人生 今天就要各奔...
    洋洋A花花阅读 91评论 0 0