2.5 准备你的iOS设备
iOS编程指南
在设备上部署应用之前,你需要按照图2-5所示的步骤来做相关配置。
如果你已经加入了iOS开发者计划的标准版或者企业版,你现在就可以生成相应的证书和描述文件(Provisioning Profile)了,通过这个证书和描述文件,你才能把下一章中的测试程序安装到你的iOS设备上。
证书和描述文件
Xcode构建工程的时候需要使用开发证书来对二进制文件进行签名,这个开发证书同时也是你作为iOS开发者的唯一标识。Xcode会从Mac OS X的Keychain程序里自动寻找这个开发证书以及另外一个名为WWDR Intermediate Certificate的证书,这个校验证书也是从Developer Portal上下载的。
描述文件将开发证书(也就是开发者)、设备以及iOS应用的App ID绑定在一起,用于唯一标识安装在开发设备上的应用。要把使用了开发者证书签名的应用安装到iOS设备,你必须将相应的描述文件也同时安装到这个设备上才行。
当前版本的Xcode会自动创建和更新开发iOS应用所需的证书和描述文件。不过我还是建议你至少在第一次创建证书和描述文件的时候手动做一下,这样你可以弄明白整个过程,理解Xcode在背后帮你做了些什么事情,一旦Xcode出了问题也可以自己来手动搞定,而且Xcode也的确经常出问题。
2.5.1 创建开发证书
首先,你需要的是一个开发者证书和苹果公司的WWDRIntermediate证书。在从Provisioning Portal申请开发者证书之前,你需要先使用Keychain Access应用程序创建一个证书签名请求(CSR)。
在系统的/Applications/Utilities目录下找到Keychain Access应用程序,启动之后依次选择Keychain Access→Preferences菜单,打开Certifications选项卡,确保Online Certificate Status Protocol(OCSP)和Certificate Revocation List(CRL)两个选项都处于Off状态,如图2-6所示。
接着,在Keychain Access的菜单中点击Certificate Assistant→Request a Certificate from a Certificate Authority,输入之前注册过程中用作Apple ID的电子邮件地址,如图2-7所示。选择“Save to disk”单选框并勾选“Let me specify key pair information”,Keychain Access应用程序会将这个证书请求保存为文件,因此会弹出一个窗口让你输入文件名。
接受默认参数(a key size of 2,048 bits using the RSA algorithm)就好,然后单击继续按钮,应用程序会生成一个CSR文件并保存到磁盘。文件会保存到你之前输入文件名称时指定的路径(默认情况下是保存到你的桌面)。
下一步,登录到iOS Dev Center,点击Provisioning Portal链接,新打开的页面是管理与你的开发者账号相关联的证书和设备的地方。1
点击Certifications链接,打开管理证书的页面,进入Deverlopment标签,点击Request Certificate按钮,根据引导上传你刚生成的CSR文件。
如果你是以个人身份加入iOS开发者计划的,系统会自动批准你的证书请求;如果你只是开发团队的一员,就需要团队的管理员审批并通过你的证书请求,之后系统才会生成证书并允许你下载。
图像说明文字如果你点击Approve之后没有看到下载选项,点击Development标签来刷新页面,就应该有了下载选项。
通过审批之后,下载你的个人证书以及WWDRIntermediate证书并安装到Mac OS X系统的Keychain中。依旧是在Development标签下,点击个人证书右侧的Download按钮,然后右键点击WWDRIntermediate证书,选择保存链接文件到磁盘。
将这两个证书下载到本地之后需要把它们安装到Mac OS X系统里,双击证书文件,Keychain Access程序就会自动启动,Keychain Access会弹出确认对话框让你再确认一遍是否要安装证书文件,直接点击确认按钮就可以了。
图像说明文字 如果系统中有多个Keychain,安装证书的时候会有下拉框要求选择装在哪个Keychain里,选择默认的那个就好,通常叫做login。在Keychain Access程序的左上角使用粗体显示的就是默认keychain,最好是保持login为默认Keychain,如果login不是默认的,可以通过菜单File→Make Keychain“login”Default来将其修改为默认的。如果不把证书安装到默认Keychain里,Xcode就找不到证书,因此将无法使用证书进行二进制签名,也就无法将你的应用安装到iOS设备上去。
打开Keychain Access应用程序,然后点击左侧下方Category中的Certificates分类,你可以看到所有成功地安装到了你的keychain中的证书。在这里,你应该可以找到你自己的开发者证书和苹果公司的WWDR证书这两个证书,如图2-8所示。
Keychain Access程序显示了新安装的证书,这两个证书是使用Xcode开发iOS应用并部署到iOS设备上是必须的
2.5.2 获取开发设备的UDID
将iOS设备连接到Mac计算机,打开Xcode,选择Window→Organizer菜单,打开Organizer窗口,里面会列出已连接到你的计算机的设备。
为你的开发设备创建描述文件需要使用这个设备的唯一设备标示符(UUID),在左侧菜单中选中这个设备,就是那40个字母长的字符串,右键复制。
回到Provisioning Portal,点击Devices,选择Manage标签,点击Add Device按钮,输入设备名称和UUID,点击Submit按钮,现在这台设备就注册好了。
2.5.3 创建App ID
App ID也是创建描述文件所必需的,描述文件和刚才创建的证书不同,证书是放在Mac系统的Keychain里面的,Xcode使用这个证书来给iOS应用的二进制文件签名,而描述文件是用来绑定开发证书、应用和设备的,通过Xcode安装到iOS设备上,iOS系统会对程序签名和描述文件进行校验,校验成功后应用才能正常运行。
在iOS Developer Program Portal里点击App IDs,选择Manage标签,点击New App ID按钮,输入App ID的名称,名称可以随便取,不过最好是能方便你理解的。这是首次创建App ID,所以在Boundle Seed ID中选择Generate New。
最后输入一个Bundle Identifier,这个必须是唯一的,大多开发者选择将自己的域名反过来写作为Bundle Identifier。例如我的域名是babilim.co.uk,于是我把uk.co.babilim.*作为我的Bundle Identifier。
星号(*)出现在结尾用作通配符,这意味着你可以让多个应用共用这一个App ID。如果不用通配符就需要为每个应用都创建一个新的App ID,相应的描述文件也要新创建一个,否则应用就无法在你的设备上运行。使用通配符也就意味着即使你有很多应用,也只需要创建一个描述文件就可以了。
从技术层面上来说,这种方式会让iOS设备中的多个应用共享设备中Keychain的同一部分,我们接下来再深入地谈一谈这个问题,因为虽然使用通配符听起来很赞,但问题是使用这种App ID的应用无法使用苹果的Push Notification服务以及应用内支付服务。
点击Submit按钮,网站会生成一个新的10个字母的Bundle Seed ID,将这个ID和之前你填写的Bundle Identifier连接起来,就是你的App ID了。
你最好把这个Bundle Identifier记录下来,当你把你的应用部署到iOS设备的时候会用得到,第3章结尾的地方会提到这个问题。
2.5.4 创建移动描述文件
接下来可以创建移动描述文件了2,进入Provisioning Portal的Provisioning页面,选择Development标签,点击New Profile按钮。
输入名称,这里我强烈建议使用“Developer Profile”,因为之后你还要创建其他多个描述文件,包括用于发布到App Store以及通过Ad hoc方式来发布测试版本所需要的描述文件,这样做可以防止名称混淆。
选中你需要关联的证书前的选择框,如果你是个人开发者,这里应该只有一个可选的证书,就是你刚刚用Keychain Access申请的那个。
选择刚刚创建的App ID,再选择你的开发设备(如果不止一个开发设备的话,可以选择多个),这个描述文件只会认为选中的这些设备是合法的。前面提到过Xcode会把描述文件安装到设备上,而用这个描述文件中的证书签名的应用就可以在这台设备上运行。
如果你在这里选错了或者少选了设备也不要紧,之后可以随时在已有的描述文件里添加设备,不过那样会重新生成描述文件,然会还要再一次下载到本地并更新本地的描述文件才行。
点击Submit来生成新的描述文件,这个是用来开发的,在本书的后面部分我们会讨论用于发布的描述文件怎么生成。这个时候描述文件的状态会变成“Pending”,点击Development标签来刷新页面直到生成成功。
描述文件生成之后,点击Download下载到你的计算机上,有多种安装方法,最简单的是把.mobileprovisioning文件拖放到Mac系统的Dock上的Xcode图标上。
2.5.5 让你的设备支持开发
这是在开始写代码前的最后一步了,回到Xcode,选择菜单Window→Organizer,从左侧栏选中你的开发设备,点击Use for Development按钮。如果Xcode没有成功地对你的设备进行注册,则把数据线断开,然后重新连接一下。如果还是不行,尝试把设备重启一下,然后重试一遍。你可能需要重置设备,这取决于设备上安装的操作系统的版本以及SDK的版本,在Xcode的Organizer窗口中可以重置。但是,这个过程中你将丢失设备上已有的数据。如果真的需要重置,你可以通过iTunes或者iCloud将你的数据先备份一下。
如果你有钱的话建议你单独买一个设备专门用于开发,将来你可能会安装iOS的Beta版来了解新版本的新特性以及预先做新版本兼容准备,而Beta版一般都很不稳定。如果你在日常生活中非常依赖于通过iPhone来和其他人联系,那么你很可能就更不想用这个iPhone来同时做开发了。
安装了描述文件之后可以检查一下Xcode是否已经将描述文件同步到设备中了,打开设备,选择“设置→通用→描述文件”(Settings→General→Profile)就可以查看到了,如图2-10所示。
现在检查一下是不是全部都能正常工作了,在Xcode的Organizer窗口里查看左侧边栏中设备名称右侧的指示灯的颜色,绿色就表示一切就绪,黄色表示存在问题。点击设备的名称,在主面板中会显示该设备已安装的描述文件,如图2-11所示。
Xcode的Organizer窗口显示我的iPhone 5已安装好描述文件并已做好开发准备
恭喜了,你已经安装好了所有必需的证书和描述文件,现在可以在你的设备运行你编写的代码了。
1译者注,随着苹果对系统的升级,iOS Dev Center也会升级,因此网页的界面可能会发生变化,请读者不要拘泥于本书所描述的按钮或链接的名称和位置。
2译者注,随着苹果对系统的升级,iOS Dev Center也会升级,因此网页的界面可能会发生变化,请读者不要拘泥于本书所描述的按钮或链接的名称和位置。