之前一直没搞明白证书问题,总觉得麻烦,公司也一直有专人管理,现在可算自己搞了下,幸好看见了一个比较详细的文章!
链接:http://www.jianshu.com/p/a85b629e5a29
在这转载一下,并且根据自己需求修改了一下部分内容
iOS有两种证书和描述文件:
证书类型使用场景
开发(Development)证书和描述文件用于开发测试,在HBuilder中打包后可在真机环境通过Safari调试
发布(Distribution)证书和描述文件用于提交Appstore,在HBuilder中打包后可使用Application Loader提交到Appstore审核发布
准备环境
必需要有苹果开发者账号,并且加入了“iOS Developer Program”
Mac OS 10.9以上系统(如果已经申请p12证书则不需要)
登录iOS Dev Center
打开网站https://developer.apple.com
使用苹果开发者账号登录帐号:
![](https://i-blog.csdnimg.cn/blog_migrate/04f4b5c7ed23f32b5a2b05d11674be67.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/0e01c25ea52072514ec2b4019c20d374.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/acfb64aa9b890069df55e682424a543a.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/4da1f8227a23c925a31855d42750b625.webp?x-image-process=image/format,png)
开始创建证书:
打开“Certificates -> All”页面,可以看到所有已经申请的所有证书
1.申请苹果App IDs
(也就是bundleID,如果已经申请,可跳过此节)
在“Identifiers"下选择“App IDs",可查看到已申请的所有App ID,点击右上角的加号可创建新“App IDs”:
![](https://i-blog.csdnimg.cn/blog_migrate/88c407b0e9cd95a1dbc182fe7efa4175.webp?x-image-process=image/format,png)
打开“Register iOS App ID”页面,在“App ID Description”栏下的“Name”项中输入名称(如“HBuilderApp”):
![](https://i-blog.csdnimg.cn/blog_migrate/9f15ca017dcac739dbbc3482ec517491.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/4113a2fd7480401ca88b33e812f63570.webp?x-image-process=image/format,png)
在“App Services”栏下选择应用要使用到的服务(如需要使用到消息推送功能,则选择“VPN Configuration & Control”):
(注意:项目工程中的bundle ID需与此处的Bundle ID相对应)
![](https://i-blog.csdnimg.cn/blog_migrate/19adb0482c76af61bd1a36b17c3c6187.webp?x-image-process=image/format,png)
设置完成后选择“Continue”,弹出确认界面,点击Continue。
![](https://i-blog.csdnimg.cn/blog_migrate/6fc69b51ce23580f92b8ba0860b256b3.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/eeb340d225f5468bb5d1a4143f09f281.webp?x-image-process=image/format,png)
确认后选择“Submit”提交,再次确认就可以在“App IDs"页面看到刚创建的App ID:也就完成了APP ID的创建。
![](https://i-blog.csdnimg.cn/blog_migrate/3fcba82543f692e8fd0e6774517048c7.webp?x-image-process=image/format,png)
2.生成证书请求文件(钥匙串)
不管是申请开发(Development)证书还是发布(Distribution)证书,都需要使用证书请求(.certSigningRequest)文件,证书请求文件需在Mac OS上使用“Keychain Access”()工具生成。
打开钥匙串访问工具:
![](https://i-blog.csdnimg.cn/blog_migrate/175f3a6c0533cd9d8b6b238c1586d506.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/e1995eef9179f2a7a559489366cfcddc.webp?x-image-process=image/format,png)
打开菜单钥匙串访问(一般在电脑的左上角)
![](https://i-blog.csdnimg.cn/blog_migrate/250a91afe8d55d7a159b3cddcf14cb91.webp?x-image-process=image/format,png)
打开创建请求证书页面,在页面中输入用户邮件地址(User Email Address)、证书名称(Common Name),请求类型(Request is)选择保存到磁盘(Saved to disk):
![](https://i-blog.csdnimg.cn/blog_migrate/776a4e4387e22fc379b6fc16f039f921.webp?x-image-process=image/format,png)
点击“继续”后弹出保存路径:
![](https://i-blog.csdnimg.cn/blog_migrate/7b3ff4dd6627dcd8f4a4d07199d204d0.webp?x-image-process=image/format,png)
点击“Save”后保存证书请求文件,成功提示,在点击”完成“即可完成请求文件的申请。
![](https://i-blog.csdnimg.cn/blog_migrate/b8da5c7893c3906979f375275bb18c83.webp?x-image-process=image/format,png)
直接保存文件名称为“CertificateSigningRequest.certSigningRequest”,后面申请开发(Development)证书和发布(Production)证书时用到。
3.申请开发(Development)证书和描述文件
开发(Development)证书用于测试环境下使用,可以直接安装到手机上(不用提交到Appstore),但一个描述文件最多只能绑定100台设备(因此通过这种证书正式发布应用是行不通的)。
证书类型:
![](https://i-blog.csdnimg.cn/blog_migrate/1190fa966e84434bcb179d67b16b95bc.webp?x-image-process=image/format,png)
3.1申请开发(Development)证书
在“Certificates, Identifiers & Profiles”页面“Certificates"下选择“Development",可查看到已申请的所有开发(Development)证书,点击右上角的加号可创建新证书:
![](https://i-blog.csdnimg.cn/blog_migrate/20e1eb52c5cf61b697198e680fb504f3.webp?x-image-process=image/format,png)
打开“ Certificate-Development”页面,在“Development”栏下选中“iOS App Development”:
![](https://i-blog.csdnimg.cn/blog_migrate/4d4dd980c8356e01ede67427c8381fb2.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/d2c2aa0e1ce949e48fcbcad603df6407.webp?x-image-process=image/format,png)
温馨提示:若已有的证书还在使用时,不要随便的删除,删除后原来的证书就不能正常使用了。
在页面底部选择“Continue”:
![](https://i-blog.csdnimg.cn/blog_migrate/8258313958deff48b709f1443e150af8.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/9340274293df5a22a51dee8e3428999b.webp?x-image-process=image/format,png)
打开证书生成页面,点击“Choose File...”选择“生成证书请求文件”章节生成的“CertificateSigningRequest.certSigningRequest”文件,点击“Generate”生成cer证书成功:
(也就是你用钥匙串申请的证书请求文件)
![](https://i-blog.csdnimg.cn/blog_migrate/e3ef6a1c64c839858a53fd52651c10ab.webp?x-image-process=image/format,png)
生成证书成功后打开证书下载页面,选择“Download”下载保存证书(ios_development.cer):
![](https://i-blog.csdnimg.cn/blog_migrate/c1de45c5c0d40c813dc61e1879decf80.webp?x-image-process=image/format,png)
下载后打开钥匙串,双击证书即可添加到钥匙串里面。
导入成功后,可以在证书列表中显示:
![](https://i-blog.csdnimg.cn/blog_migrate/2bb57a543f83b13badb2bf24df84a3fb.webp?x-image-process=image/format,png)
导出P12文件:
选中导入的证书(将证书到处方便多人开发时给别人使用),右键选择“Export "Developer.." 或者“导出...”:
![](https://i-blog.csdnimg.cn/blog_migrate/03c673c4afae69da2bd54500c194acee.webp?x-image-process=image/format,png)
打开证书保存页面,输入文件名、选择路径后点击“Save”:
![](https://i-blog.csdnimg.cn/blog_migrate/5093ce4573bd9f04239a1bba442da383.webp?x-image-process=image/format,png)
打开设置证书密码页面(记住这个密码,给别人用的时候需要),输入密码及确认密码后点击“OK”:
![](https://i-blog.csdnimg.cn/blog_migrate/5165e3cb9a32008a416374e835e91f58.webp?x-image-process=image/format,png)
打开访问“Keychain Access”密码页面,输入Mac OS管理员密码,点击“Allow”,保存开发(Development)证书(如“HBuilderCert.p12”)。
3.2添加调试设备(UDID)
注意:(这里申请的账号是公司开发者账号或者个人开发者账号时才需要添加UUID,企业账号不需要添加UUID)
开发描述文件必须绑定设备,所以在申请开发描述文件之前,先添加调试的设备。
(如果已经添加设备,可跳过此节)
拿到UDID的方法:将设备连接到电脑,启动iTunes,点击次区域可切换显示设备的UDID,右键选择复制
![](https://i-blog.csdnimg.cn/blog_migrate/3f5028c9af60ade7632d5dec73ad12d0.webp?x-image-process=image/format,png)
打开“ Devices”页面,输入设备名称和UDID:
![](https://i-blog.csdnimg.cn/blog_migrate/8c8c4c3764f420edcbeb613096f76a9f.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/ae6e6cec0596edf1b93db1b97ba4f90d.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/b25488c807400bdc5917d5ec6ad65f8e.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/1dfbb8dcebdae2336ae6cc6574daa965.webp?x-image-process=image/format,png)
3.3申请开发(Development)描述文件
在“Certificates, Identifiers & Profiles”页面“Provisioning Profiles”下选择“Development",可查看到已申请的所有开发(Development)描述文件,点击右上角的加号可创建新描述文件:
![](https://i-blog.csdnimg.cn/blog_migrate/c82103ce881cde88a33fb7c55bbe043d.webp?x-image-process=image/format,png)
打开“Add iOS Provisioning Profile”页面,在“Development”栏下选中“iOS App Development”:
点击“Continue”按钮,打开“App ID”选择页面,选择要使用的“App ID”(如之前创建的“io.dcloud.HBuildApp”),点击“Continue”:
打开“Select certificates”页面,选择前面创建的开发证书:
![](https://i-blog.csdnimg.cn/blog_migrate/400c70c91d9fa491149b3de74f2acb53.webp?x-image-process=image/format,png)
点击“Continue”,打开选择调试设备页面,选择用于调试安装的设备(最多100太设备):
![](https://i-blog.csdnimg.cn/blog_migrate/2df295d20c3aca369c8d124c4557e8b8.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/7b8ce4908a6c8f2a5772aff7dbf575b0.webp?x-image-process=image/format,png)
点击“Continue”,输入描述文件的名称(如“HBuilderProfile”):
![](https://i-blog.csdnimg.cn/blog_migrate/e923b69ec0b1e94ceb670539237e565c.webp?x-image-process=image/format,png)
点击“Generage”,生成描述文件成功:
![](https://i-blog.csdnimg.cn/blog_migrate/862bbb7b1ea5cf4e20f649528c512a4b.webp?x-image-process=image/format,png)
点击“Download”下载保存开发描述文件(如HBuilderProfile.mobileprovision)。
4.申请发布(Distribution)证书和描述文件
发布(Production)证书用于正式发布环境下使用,用于提交到Appstore审核发布。
发布证书的申请与开发证书的相似。
4.1申请发布(Production)证书(每个账号申请的数量是有限的,尽量别删除,可以下载下来,实在不行就问别人要)
在“Certificates, Identifiers & Profiles”页面“Certificates"Production",可查看到已申请的所有发布(Production)证书,点击右上角的加号可创建新证书:
![](https://i-blog.csdnimg.cn/blog_migrate/ca1a3c7ca5ece40f663e59174e7f969f.webp?x-image-process=image/format,png)
打开“ Certificate-Production”页面,在“Production”栏下选中“App Store and Ad Hoc”:
![](https://i-blog.csdnimg.cn/blog_migrate/6260e7c21b9a2820f206f20432d3f34f.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/b2db485dac3a50a0c585b2a88bc3976a.webp?x-image-process=image/format,png)
打开证书生成页面,先点击“Choose File...”选择“生成证书请求文件”章节生成的“CertificateSigningRequest.certSigningRequest”文件,再点击“Generate”生成cer证书:
![](https://i-blog.csdnimg.cn/blog_migrate/299fb875eed5797c9deb8591301a25a6.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/1361a58ae29b3b1627db3168134132ec.webp?x-image-process=image/format,png)
下载后点击“Done”即可完成,同样的双击下载好的证书,将 其添加到钥匙串里面,按上面同样的方法将其导出p12文件给别人使用。
4.2申请发布(Distribution)描述文件
(打包的时候必用)(打包:UDID +钥匙串申请的请求性文件 +发布描述性文件)
在“Certificates, Identifiers & Profiles”页面“Provisioning Profiles”下选择“Distribution",可查看到已申请的所有发布(Distribution)描述文件,点击右上角的加号可创建新描述文件:
打开“Add iOS Provisioning Profile”页面,在“Development”栏下选中“iOS App Development”:
点击“Continue”按钮,打开“App ID”选择页面,选择要使用的“App ID”(如之前创建的“io.dcloud.HBuildApp”),点击“Continue”:
![](https://i-blog.csdnimg.cn/blog_migrate/6bec9b61f08894c7821400d6d8ee22b3.webp?x-image-process=image/format,png)
打开“Select certificates”页面,选择前面创建的发布证书:
![](https://i-blog.csdnimg.cn/blog_migrate/681f2aed880cc29cd7281167ad893cb5.webp?x-image-process=image/format,png)
点击“Continue”,输入描述文件的名称(如“HBuilderProfileDistribution”):
选择要打包进去的UUID,如果时公司或者个人开发者账号的话,这里需要选择UUID添加进去,连同UUId一起打包进去,如果是企业开发者账号打包的话则不需要添加UUID,这也就是企业账号与公司货过热帐号打包时的唯一区别。
![](https://i-blog.csdnimg.cn/blog_migrate/c918546bd42bf4535bfb0569f5f6fd25.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/42e47bc7835f199050c11746b3616d00.webp?x-image-process=image/format,png)
点击“Generage”,生成描述文件成功:
![](https://i-blog.csdnimg.cn/blog_migrate/24165bba1a9723461b0df5ff656c2de9.webp?x-image-process=image/format,png)
点击“Download”下载保存开发描述文件(如HBuilderProfileDistribution.mobileprovision)。
使用方法:
使用的时候只需要打开你的Xcode项目,将这些开发或者发布描述性文件双击即可添加到你的项目工程中了。
这里终于完成了所有的证书的申请了。容我感慨一下,其实很简单,但是一边截图,一边备注,再将图片添加到简书上实在是花了不少时间啊,终于知道那些写简书或者博客大神们的辛苦与伟大了。其实很多都可以用语言描述的。但我觉得还是图片看起来要好一点,花再多的时间都是值得的,只要能学到知道,帮到更多的朋友。若有帮到你请打一个喜欢,以示鼓励一下,若你发现里面有什么错误的或不足的,还请多多指出,感谢!
参考:https://developer.apple.com/account/ios/profile/production/create
下面是一些打包IPa包时的各种注意事项及错误:
错误:
![](https://i-blog.csdnimg.cn/blog_migrate/a3c95602abac052021730f0a89577a82.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/c024b272603a9747e2735b92f9d92d3d.webp?x-image-process=image/format,png)
【链接】archive的时候报“noidentityfound"错,怎么办
https://segmentfault.com/q/1010000002557052
![](https://i-blog.csdnimg.cn/blog_migrate/47f4d68d375b80c1cb98e89d0afecd96.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/50b1ca8994b65242c9d497b7ca8c7058.webp?x-image-process=image/format,png)