苹果的证书繁锁复杂,制作管理相当麻烦。作为一个初学者,一开始都会觉得头乱如麻,在这里我对它进行一部分整理。(特别是当Xcode升级到5.1后,这方面的资料比较缺乏)
基本概念
首先要先明确几个概念。
1.app ids:苹果用于识别开发者所开发的app的唯一标识。
2.开发者证书:(分为开发和发布两种,类型为ios Development,iosDistribution),这个是最基础的,不论是真机调试,还是上传到appstore都是需要的,是一个基证书,用来证明自己开发者身份的;
3.Provisioning Profiles,这个东西是很有苹果特色的一个东西,我一般称之为PP文件,该文件将appID,开发者证书,硬件Device绑定到一块儿,在开发者中心配置好后可以添加到Xcode上,也可以直接在Xcode上连接开发者中心生成,真机调试时需要在PP文件中添加真机的udid;是真机调试和上架必备之珍品;
机制
苹果因为自己的封闭体系,初次接触的开发者使用其服务的时候,会觉得非常繁琐。它不会允许你随意发布和安装程序(封闭体系)。苹果为了达到让你不能随意安装app的目的,用了这么一个机制。你要到官网上的MemberCenter里.
1.你要给你的app绑定app ids,在这个过程中需要填写Bundle,非常重要,你的app中也包含这样一个bundle,两者必须一样,后面再细说。
2.将你准备测试的程序添加到测试设备中去(devised)。
3.开发者本身需要注册开发证书(上传秘钥那一套)。
这样三者合一,就用到了苹果特有的一个文件类型ProvisioningProfiles。该文件将appID,开发者证书,硬件Device绑定到一块儿,在开发者中心配置好后可以添加到Xcode上,也可以直接在Xcode上连接开发者中心生成。不管是真机测试,appstore上架,都不可缺少。
而生成描述文件(Provisoning Profiles)这个过程,就好比你用的证书给这个程序签了名(这是你所开发的程序),同时写明了它能到哪些设备中去运行。
生成provisioningprofile 时,可以选择app storeios ,appdevelopment,Ad Hoc 三种profile ,分别对应着上架store storeios;开发者真机测试(设备直接连机器那种);还有就是设备连不了机器,所以远程打包ipa后安装的那种.
有了这玩意,你才能有下一步。
真机调试过程
拿将将程序真机调试为例子。分为两种情况 iOS profile 分2种,第1种是development profile,用来给你(开发人员)做真机测试的;第2种是发布profile,发布profile又分发布到app store的(这里不提及)和发布测试的ad hoc profile。
1.development profile:
测试人员能将机器直接拿到你面前来的,你可以直接通过xcode将程序run进测试机器的时候。如果你的tester(团队测试人员、客户)都能将测试设备拿到你面前,直接插到你的mac开发机上,你可以直接将程序“灌”进去,那有开发证书就够了,不需要ad hoc证书。
1.1进入申请界面
打开iOS Dev Center,选择Sign in,登陆(至少99美元账号),登陆之后在网页右边找到Certificates,Identifiers & Profiles,选择certificates
1.2:申请本地证书
1.2.1:申请本地秘钥
申请证书必须在我们的电脑上先申请一个证书,找到 :
点击"其他",找到“钥匙串”:
选择从颁发机构申请证书,注意下面的红色框,必须选择那一个才可以:
点击后看到:
如果选择 “存储到磁盘”,那么“用户邮件地址” 随便填一个就好,点击“继续”:
“存储为:”可以给证书命名,选择一个位置,点击“存储”:
这样在桌面就生成了一个证书。
注意这一个本地证书可以同时用来生成“开发证书”和“发布证书”。
下面只介绍“发布证书“的申请,申请”开发证书“步骤相同,就是换一个选项
1.2.2在开发者账号里申请证书
我们进入99美元开发账号看到:
点击 Certificates, Identifiers & Profiles,进入页面看到:
如果要申请开发证书就选择 Development,如果要申请发布证书,就选择 Production,步骤都是选择“+”号后添加证书:
点击“+”后看到:
如果是选择 “开发证书”,点击第一个红框
如果是选择 “发布证书”,点击第二个红框
选择好后,点击“continue”:
点击后出现
选择“Choose File” 将刚刚申请的保存在本地的证书上传:
上传好后,点击“Generate” 就可以生成证书了。
选择“Download”。
这时,我们在本地生成的证书就没用了,可以删除。
我们返回到证书的界面可以看到我们申请的证书:
一般申请一个 发布证书(IOS Distribution),一个开发证书(IOS Development)就够用了。
找到下载的文件,双击它,添加到钥匙串里就好了。在这一步里,如果钥匙串拒绝添加,直接将其拖进钥匙串就行:
这样证书就申请完毕了,有了证书后,接下来可以申请各种各样的描述文件供开发使用
1.3、添加App ID
选择Identifiers->App IDs,在右侧选择添加按钮添加
选择 “Identifiers”的 “App IDs”,点击“+”
出现以下界面:
· App ID Description 是一个App ID的描述,就是一个名字,这个名字可以随便取
· App ID Prefix 苹果已经帮我们填了,不需要我们填,可以看出,它是一个团队的ID
下一步,选择 App ID Suffix
App ID Suffix 有两个选项:
· Explicit App ID :顾名思义,这里要填一个明确的 App ID,
什么意思呢?可以这么来解释:我们做项目时的Bundle Identifier (Bundle ID)是用来标示我们的app的。我们的App ID也是用来标示我们的app的。这两个有什么联系呢?Explicit App ID 就是要我们确定一个唯一的 Bundle ID,用来标示我们的 app,使它有一个固定的身份。可以发现,当提交应用到苹果时,如果我们一开始没写 Explicit App ID,苹果会自动帮我们生成一个与我们发布时填的一样的 Bundle ID 到我们的 App ID中。
填写 Explicit App ID 的格式为:com.company.appName
· Wildcard App ID:顾名思义,这里要填一个通配符的 App ID 。意思就是,我们只需要填一个在所有应用都能试用的 App ID 就好了。
填写 Wildcard App ID 的格式为:com.company.*
申请真机调试的时候,不是为了某一个应用去调试,而是为了所有的应用去调试,必须能适应每一个app,所以我们选择 Wildcard App ID。
com.company.* 的company 一般写公司的名字,也可以按需要写
可以发现,选择 Explicit App ID 会比 Wildcard App ID 多几个服务选项可以选,不过我们是真机调试,所以无所谓,将能选的勾上,选择“Continue”就好。
看到如下界面,点击“Submit”后就可以生成App ID了
1.4、添加设备(Devices)
如图,点击“+”,一个99美元账号只能申请100个设备。
Name 自己取一个设备的名字,UDID约等于设备的身份证,可以在xcode中查看
查看UDID
打开xcode,选择“Windows”的“organizer”:
选择设备看到 “identifier”,这个就是我们设备的 UDID,将其复制,可以填入上上图显示的 UDID中。
当你的机子第一次用于开发时,可以看到,显示的灯是“灰色”的,可以点击“use for developer” 来作为开发机。点击了“use for developer”后,可以发现你的灯变成了黄色的了。
如果一个手机本来就是开发机(一个手机可以安装多个开发用的描述文件)或者越狱的手机,那么它刚插进去就是绿灯。但是绿灯并不代表就能用,必须安装相适应的描述文件。如图就是一个没有安装相应描述文件的开发机。
填好 name 和 UDID后,点击continue 就可以看到如下界面,点击“Register”就可以在苹果上登记了。
下面还可以选择添加多台设备,本人表示智商不够,不会,99美元账号可以添加100台设备,299美元的账号本人不晓得。。
1.5 添加描述文件(provisioning Profiles)
如图点击 “+”
选择 “iOS App Developer”,然后“Continue”
这里选择我们刚刚生成的 App ID,选好后,点击“Continue”
这里选择一个开发证书,有两点要注意:
· 这个证书是我们刚刚自己在本机与苹果开发者网站生成的 开发证书 “Development certificate”
· 如果不是刚生成的,这个证书必须在本地的mac的钥匙串中存在(带密钥的证书,不带密钥的依然无效)
如果不想自己在重新生成证书,用别人生成的证书,可以从别人的电脑中导出p12文件,可以参考:如何导出p12文件
选好证书以后,点击“Continue”
选择设备,设备可以选择全部设备,也可以按需选择你需要的设备:
这里给我们的描述文件取一个名字,这个名字在以后的xcode中是看得到的,所以可以取一个好辨认的名字。取好名字后,选择“Generate”生成描述文件。
生成好描述文件后,选择“Download”,双击进行安装(安装后在xcode中可以查看)
· 安装成功后,以前没作为开发机的手机会变成绿色的(以前就是开发机和越狱的手机一直是绿色的,但是不重新申请符合证书的真机调试任然是不能真机调试的)
· 点击“Provisioning Profiles” 看到 “Valid profile” 就是成功安装的意思。
如果没有安装成功,一般是证书或者描述文件的问题,看看证书是不是从自己的机子上生成的,描述文件的配置信息(是否和你的本机存在的带秘钥的证书相匹配,你添加的设备是否包含你现在选择调试的设备)等,如图第一个警告是因为没有证书与描述文件相匹配出现的
配置好后,还不是绿灯,则考虑问题:
· 设备版本高于XCode所能支持的版本,如XCode4.6.3,能支持的最高版本未iOS6.1,如果你的设备系统大于等于iOS7以上,此时需要 更新至XCode5; 再如:XCode5 不支持ios7.1,如果想开发ios7.1,必须将xcode5 升级到 xcode5.1以上版本;
例如:
在真机调试时,不要忘记设置这两个,否则调试失败:
这个必须填:之前写Wildcard App ID 的内容. app的名字
设置好这两个之后再点击运行。
2 ad hoc描述文件:
如果tester的iOS设备不能直接让你灌程序,那怎么办?你必须打包(Archive)你的程序,然后发给你的tester,让他通过itunes进行安装,那就需要ad hoc证书了。
具体的区别:ad hoc证书生成过程,和开发证书生成非常类似,唯一的区别就是 app ids,证书,以及devices打包成Provisioning Profile过程中,在apple service上选择的是生成的是ad hoc文件。
此外在xcode5.1中,apple 加入了一些新的特性,首先是在(和buildSetting同级的一些东西) 的General里,加入了Team的设置,只要填写对应的Apple ID和应用Bundle ID,Xcode就将自动去寻找对应的Provisioning Profile,并使用合适的Provisioning来进行应用打包。因为有了自动配置和将集成的版本管理放到了菜单栏中,Organizer的地位被 大大削弱了。至少我现在在Organizer中没有找到本机的证书管理和Provisioning Profile管理的地方,唯一开Organizer的理由大概就是应用打包发布时了。
另外,在xcode 5"organizer"里provisioning profile的管理界面已经不再有, 而是改为在menu "Xcode > Preference...> Accounts tab" 里进行管理, 还有一点不同的是你需要在Accounts tab里添加Apple ID with password.
在真机调试时,不要忘记设置这两个,否则调试失败:
这个必须填:之前写Wildcard App ID 的内容. app的名字
设置好这两个之后再点击运行。
1.1 选择ad hoc证书.在“Code Signing”栏,你需要选择之前生成的发布(ad hoc),如下图,
这里要选择“iPhone Distribution”,而不是“iPhone Development”,否则会在下面打包(Archive)步骤报证书错误。
2、编辑“Scheme”,选择菜单:Product -> Edit Scheme,如下图,
红色框部分要选对,注意要分别选iOS Device和Release。
3、打包(Archive),选择菜单:Product->Archive,在organizer窗口可以看到你的程序,
然后点击“share”按钮,进行发布(share)
4、Share
选第一个“iOS App Store Package”,生成.ipa文件,你的Tester使用itunes即可安装。最后一个Archive,需要对方安装xcode。
1、打开XCode,插上设备,如果XCode不显示设备,而是iOS Device的状态,则检查Targets->iOS ApplicationTarget->Deployment Target中的版本是否与设备版本不匹配
2、选择上图中Build Settings,将Code Signing中的profile设置成上文下载的Provisoning Profile(joanfen),也可设置成Automatic profile中的iPhone Developer,XCode将会自动匹配描述文件
3、检查Bundle ID是否与描述文件所包含的App ID中的Bundle匹配,选择TARGETS->Summary查看,由于我们申请的是通用型App ID,所以Bundle Identifier只需要是com.oschina.打头即可,后面可以随意填写
打包过程:
选择弹出的 archives 下的 Distruibute
最后,通过 iTuse 完成安装.好了,大功告成!!