为了在设备上安装和调试应用程序,必须将它配置为开发设备,下面通过一个过程来讲述如何将设备配置为开发设备。
注册前的准备在开发过程中将应用程序部署到设备上,需要注册一个iOS开发者的付费账号,之后,需要获得一个开发证书并创建一个开发配置文件(development provisioning profile)。配置主要有两个部分,一是注册设备让它可以运行开发环境下生成的应用程序;二是在Mac上创建一个开发证书对应用程序进行签名。注意 要完成这几个相关步骤,就像跳舞一样,要跳来跳去。一旦在初期配置好它,就会发现其处理过程与为ad-hoc或App Store发布应用程序相类似。登录iOS开发者中心,打开如图1-16所示的iOS Provisioning Portal(以下简称Portal),它是一个用于创建证书、注册开发设备并创建开发配置文件的网络工具。
首先,单击左侧导航面板的Term链接,这里可以管理团队成员。如果注册的是原开发商,可以看到注册者的姓名以及在团队代理(Team Agent)的角色。如果团队有多名成员,可以在这里添加成员及分配其角色为成员或管理员。团队管理员(Team Admin)与团队代理人的权限一样,可以做与开发相关的任何事情,如添加新成员、批准证书请求,以及创建开发配置文件等。然而,团队管理员不能在ad-hoc或App Store分发证书和配置文件。团队成员只能向管理员或代理人申请开发证书。现在,假设只有一个开发人员且默认情况下是团队代理人,这样做的原因是添加团队成员只是这些步骤的一个子集。此时就没有签发开发证书的问题了。开发证书是为应用程序签名用的。要获得证书,需要申请。要申请证书,就要创建一个证书签名请求(Certificate Signing Request,CSR)。在OS X中选择Applications→Utilities,出现Keychain Access工具,通过它可以创建CSR。运行Keychain Access工具,选择KeychainAccess→Preferences,单击Certificates标签页,确保从上往下数的前两个下拉列表的设置为Off(关闭)(如图1-17所示)。
现在,选择KeychainAccess→Certificate Assistant→Request a Certificate From a Certificate Authority,运行Certificate Assistance(证书助理)创建一个CSR。在Certificate Assistance(证书助理)对话框中,输入在iOS开发者中心注册账号时使用的邮件地址并在Common Name文本框中输入注册者的姓名。因为要将CSR文件上传到iOS Developer Program Portal,所以不需要输入CA电子邮件地址。选择Save to disk选项以便将CSR保存为上传到Portal的文件。此外,还要选择“Let me specify key pair information.”复选框。单击Continue按钮并选择一个文件夹来保存CSR文件。最后,确保密钥的大小是2048位,算法采用RSA,单击Continue按钮保存CSR文件到指定位置。有了这个CSR,就可以申请开发证书了。现在,返回Portal去做这事。在Portal中,单击左边导航面板的Certificates,选择Development标签页并单击右上角的Add Certificate按钮。往下滚动到所有指示信息的下面,会看到一个Choose File按钮,单击它并选择刚才由KeychainAccess生成的CSR文件,然后单击Submit按钮上传它。接着单击证书申请旁边的Approve按钮批准该申请,单击Download按钮下载开发证书。下载完毕后,双击证书文件并在弹出的对话框中单击OK按钮将文件安装到keychain。现在,开发证书已经安装了,可以添加开发设备了。要对开发设备授权,首先要在Program Portal中添加UDID。为了找到UDID,连接设备并运行Xcode。在Xcode的主菜单中选择Window→Organizer,运行Xcode Organizer。在Devices下选择准备授权的设备,然后选择Summary标签页,显示在Identifier标签里的文本就是设备的UDID(如图1-18所示)。
有了UDID,返回到iOS Provisioning Portal,在Devices区域单击Add Device,然后输入为设备准备的名称和设备的UDID。记住,这样做的最终目标是在开发设备上进行应用程序开发(这是所有相关步骤中最值得一提的)。现在,已创建了为应用程序签名的证书,设备也已注册为开发设备,离实现目标只差创建开发配置文件了,不过在这之前还需要做一件事—创建一个应用程序id。应用程序id(app id)由Portal产生的bundle seed id和你(或团队管理员)选择的bundle id组成,其格式为BundleSeedID.BundleID。在开发阶段,使用通配符(*)作为bundle id比较方便,这样就不需要为每一个应用程序的开发生成一个新的应用程序id了。注意 在发布的时候,就需要为每个应用程序创建一个单独的应用程序id。要在Portal中创建应用程序id,可以在App Ids区域单击Add App Id,然后在App ID Name内输入应用程序id的名称(只是在Portal内使用),然后在Bundle Identifier中输入星号(*)。注意 如果应用程序要求Keychain Access,就不能使用星号,就必须为它生成一个唯一的Bundle id。根据习惯,Bundle id通常的形式为一个将域名反转后加上应用程序名称的字符串,例如com.mydomain.myapp。现在准备创建开发配置文件,它可将应用程序部署到设备上,它由开发证书、注册设备和应用程序id组成。返回到Portal,在Provisioning区域选择Development标签页,然后单击Add Profile。填写在Portal中使用的配置文件名称,选择之前创建的证书、应用程序id和设备,然后单击Submit按钮创建配置文件。文件创建完成后,单击该文件旁边的Download按钮下载这个文件,将应用程序部署到开发设备上以备以后使用。文件下载完后,将它拖到Dock(已连接到MAC)的Xcode图标上,这样就可将它安装到设备上。如图11-9所示,打开Xcode Organize,展开Development节点,选择Provisioning Profile检查一下配置文件是否已经安装。留意App Identifier,很快就要使用它。现在,有了App Identifier,准备好将应用程序部署到开发设备了。
由于设备仍然连接着,所以切换回MonoDevelop。下面将部署一个发布版本到设备并运行它,之后将演示如何在设备上进行调试。在解决方案树中选择LMT1-2工程,在主菜单选择Project→LMT-1 Options。展开Build节点。在iPhone Build中,设置configuration为Release,platform为iPhone,其他使用默认配置。在iPhone Bundle Signing中,将configuration和platform分别设置为Release和iPhone,设置identity为Developer(Automatic)。在iPhone Application中,设置Application Name为LMT1-2,设置identifier为之前在Xcode中看到的App Identifier。注意 如果使用通配符()作为bundle id,应该输入应用程序id中不含通配符的部分,例如,应用程序id为AA11BB22CC.,在MonoDevelop的Bundle Identifier文本框中必须输入AA11BB22CC。单击OK按钮关闭Project Options对话框。在工具栏中,选择当前配置为Release | iPhone,然后在主菜单选择Run→Upload to Device。MonoDevelop将生成应用程序,并通过内部集成的苹果工具进行签名,然后将应用程序部署到设备。在MonoDevelop的Deploy to Device标签页内可看到如图1-20所示的部署进度报告。这样,应用程序就部署到了设备,可以触碰它的图标来运行它(如图1-21所示)。大功告成!第一个应用程序已成功部署到设备。是否可以在设备上调试应用程序呢?当然可以!
相关资源:MonoTouch:用.NET开发iPhone应用(上)