iOS 生成证书、描述文件、打包上架Appstore详细流程
简介
我打算将生成证书,描述文件、上架App的步骤一步一步写下来,于是就有了这篇文章
编译环境
系统版本:macOS Sierra 10.12.6
Xcode: v9.2(9C40b)
1.开发者账号

开发者账号分为四类:
1 个人开发者账号 Individual
个人的是比较好申请的,相比于公司开发者账号,不需要 申请 邓白氏编码 不需要公司的个人信息,填写的是一些个人的资料即可,审核周期短。完全是以个人身份去发布App。它的费用是 $99
.
费用 :$99
Devices: 100台
协作人数 : 1人
能否上架AppStore: 能
2 公司开发者账号 Company
公司的开发者账号申请就比较麻烦,需要申请 邓白氏编码,这里可能需要1个月的时间,第三方机构才会把白皮书批下来。然后是填写公司的信息,税务方面的资料。审核周期大概1个月,费用 $99
3 企业级开发者账号 Enterprise
苹果设计这个类似的开发者账号,是让企业开发让内部员工使用的App,这种类似的App是不允许上架AppStore的。相对于公司开发者账号,他没有设备数限制,可以无限量的绑定设备。当然,它的费用也更加高,费用 $299
。
4 高校、教育机构 开发者账号 University
这类证书是免费的,具体申请流程应该跟个人大同小异。其实苹果公司一直是在拉拢高校,苹果设备针对高校都是有一定折扣的,有专门的高校计划
个人开发者账号 | 公司开发者账号 | 企业级开发者账号 | |
---|---|---|---|
费用 | $99 | $99 | $299 |
绑定设备数量 | 100台 | 100台 | 不做限制 |
协作人数 | 仅限一人 | 不做限制 | 不做限制 |
能否上架AppStore | 可以 | 可以 | 不允许 |
2.证书以及描述文件
1 申请开发者账号
2 生成证书
(1)首先登录账号

(2)选择 Certificates,IDs&Profiles

进入之后:

(3)先生成Development调试证书
在Certificates
中选择 Development

在底部选择 Continue
进入下一个界面

这里需要从Mac电脑生成一个证书签名请求

首先我们打开Mac的钥匙串界面

在 钥匙串访问
偏好设置中
选择证书助理
中选择 从证书颁发机构请求证书

填写资料,保存到磁盘

将证书存储到桌面

证书长这个样子

这样,我们就得到我们想要的证书请求。在前一个界面选择刚才生成的证书请求
选择Continue

选择 Download
保存到本地
到这里 调试证书生成完毕
注意
这个证书请求时通用的,我们生成发布证书,推送证书时,都是使用这个证书请求。
发布证书
发布证书只是这里勾选不一样

3.Identifiers
Identifiers
就是告诉证书,你是哪个项目。
点击添加AppIDs

点击进入

填写Boundle ID

勾选App 服务

选择Continue
,对刚才填写的资料,这里都可以看到

最后,需要在底部 选择 Register
注册。
看到这里,已经注册完成。

4. Devices 绑定测试设备
点击添加测试设备

填写设备UDID

填写完毕 选择Contiune

选择 Register
注册即可
到这里,添加Devices
完成
5. Provisioning Profiles 描述文件
通俗的来说,上文我们生成的证书就是告诉苹果我们是哪台电脑生成的,AppIDs 就是告诉苹果我们哪个项目需要他,最终结合二者产生一个描述文件

点击添加

选择绑定的AppID,Contiune
继续

选择绑定的开发者证书, Contiune
继续

选择绑定的测试设备,Contiune
继续

生成的描述文件信息,需要你对他进行命名 ,Contiune
继续

到这里就生成完毕了,点击Download
跟刚才的证书保存在一起

生成完毕,可以在这里体现出来

发布描述文件 以及AdHoc模式都是这样生成
多人开发时,我们需要将证书以及描述文件共享出来,上面提到,证书是跟电脑绑定在一起的,这时,我们可以到处.p12 文件,这样,就可以实现多人协同开发
将保存的证书,描述文件,双击安装。
打开钥匙串访问,选择 我的证书,这里我们可以看到刚才安装的证书,

选择你需要共享的证书,双击,然后选择导出

这里需要你填写密码,也可以不填写,直接保存。

这里讲的是开发证书,生成.p12信息交换文件,发布证书,推送证书都是一个步骤
描述文件是生成不了.p12 文件的
我们生成描述文件,安装好之后,就可以在工程中选择了

现在,你可以开始真机调试了,并且发布证书也安装完毕了,到你需要打包上架时,这里都不需要更改
当然,你也可以在使用 Automatically manage signing,这个我在 2016年 使用Xcode 8 时,打包上架不成功
删除描述文件
当我们更新了描述文件,比如添加了测试设备,增加了App 服务时,需要重新安装描述文件,但是发现一直不成功。我们可以删除旧的描述文件,再安装新的描述文件
~/Library/MobileDevice/Provisioning Profiles
我们进入这个目录,就可以看到整个Xcode
中安装的描述文件,选择你需要删除的即可
在2014年以前,真机也会出现这种情况,那时候需要安装一个软件,删除真机内的描述文件才可以。时代在进步,现在已经不会出现这种情况了,我也忘记了
3.Xcode
官方唯一指定开发IDE.
上架时注意:
- Xcode 不能为bate版本
- MacOSX 不能为bate版本
在 2015年,Xcode爆出一个 XcodeGhost 事件 详情可见
我们必须确保Xcode是官方版本,最好是在官网下载或者AppStore 下载,如果使用了被植入了恶意代码的Xcode,用户使用了你上架的App,会直接作为肉鸡。
检查方法:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
正常的SDKS
目录下 是没有Frameworks/CoreServices.framework/
这一级目录的
而被恶意感染的Xcode ,它的目录是这样的:
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/Frameworks/CoreServices.framework/

4. 在iTunes Connect创建 App
(1)进入开发者网站,点击进入


(2)点击+ 号,新建App

(3)填写App信息

(4)AppStore中显示的信息

点击进入分级,需要你根据App自身情况来勾选,理论上17+之后的是上不了架的

(5)在 iOS App
中填入关键的信息,在这里你需要上传App 屏幕快照,版本内容,技术支持网址,宣传文本,描述文件,版权所属人,联系人。还需要你打包上传的二进制文件等等
5. 打包、上架项目
在项目中,选择 Product
中选择 Archive
,同时工程需要选择 Generic iOS Device

在编译的时候比较耗时。

这时编译成功,这时,你可以选择上传App Store。
选择 上传,这里我们最好都勾选上

在这里,我们需要选择发布描述文件

这里包含之前勾选的一些信息,点击Upload
上传成功后,我们进入 iTunes Connect
选择 iOS App
中,构建版本中选择刚才上传的二进制文件。 通常,我们上传成功之后都是需要等待20分钟左右,苹果需要处理这个二进制文件。
检测广告标识
进入项目中的根目录中,通过它就可以检测到项目中哪些地方使用到了 广告标识
grep -r advertisingIdentifier .