《MonoTouch开发实践指南》一1.3 在设备上进行开发

简介: 本节书摘来自华章出版社《MonoTouch开发实践指南》一 书中的第1章,第1.3节,作者:(美)Michael Bluestein,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 在设备上进行开发

为了在设备上安装和调试应用程序,必须将它配置为开发设备,下面通过一个过程来讲述如何将设备配置为开发设备。

注册前的准备
在开发过程中将应用程序部署到设备上,需要注册一个iOS开发者的付费账号,之后,需要获得一个开发证书并创建一个开发配置文件(development provisioning profile)。配置主要有两个部分,一是注册设备让它可以运行开发环境下生成的应用程序;二是在Mac上创建一个开发证书对应用程序进行签名。
注意 要完成这几个相关步骤,就像跳舞一样,要跳来跳去。一旦在初期配置好它,就会发现其处理过程与为ad-hoc或App Store发布应用程序相类似。
登录iOS开发者中心,打开如图1-16所示的iOS Provisioning Portal(以下简称Portal),它是一个用于创建证书、注册开发设备并创建开发配置文件的网络工具。

screenshot

首先,单击左侧导航面板的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所示)。

screenshot

现在,选择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所示)。

screenshot

有了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,准备好将应用程序部署到开发设备了。

screenshot

由于设备仍然连接着,所以切换回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所示)。大功告成!第一个应用程序已成功部署到设备。是否可以在设备上调试应用程序呢?当然可以!

screenshot

相关文章
|
传感器 芯片 内存技术
STM32F103标准外设库——认识STM32(一)
STM32F103标准外设库——认识STM32(一)
799 0
STM32F103标准外设库——认识STM32(一)
|
人工智能 自然语言处理 API
浅谈ModelScope
ModelScope是阿里推出的下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,其开发目标为让模型应用更简单。ModelScope希望在汇集行业领先的预训练模型,减少开发者的重复研发成本,提供更加绿色环保、开源开放的AI开发环境和模型服务,助力绿色“数字经济”事业的建设。ModelScope平台以开源的方式提供了多类优质模型,开发者可在平台上免费体验与下载使用。
|
11月前
|
Prometheus 运维 监控
监控没做好,DevOps等于裸奔:Prometheus + ELK 的“稳态运营秘籍”
监控没做好,DevOps等于裸奔:Prometheus + ELK 的“稳态运营秘籍”
491 26
|
安全 数据可视化 开发者
有什么值得推荐的网站源码分享下载?
本文指出开发者找优质安全网站源码耗时,介绍了多种获取渠道:有 GitHub 等综合开源社区,虽资源多但新手筛选难;有垂直领域平台,其中 PageAdmin CMS 系统因源码完整、易上手、扩展性强受青睐;还有贴合国内需求的国内社区。同时提醒注意版权与安全检测,助力开发者高效搭建项目。
1289 9
|
9月前
|
存储 安全 数据可视化
什么是MFA令牌?其工作原理是什么?
每年,攻击者的登录技巧都在不断升级,能够更隐蔽地绕过本应阻止他们的防护环境。无论是窃取密码、重放令牌、劫持会话,还是OAuth授权诈骗,他们的攻击手段持续迭代,足以突破曾经被认为安全的身份验证方式。
535 2
|
存储 弹性计算
租用阿里云服务器按小时如何收费?1小时收费标准说明
阿里云服务器按小时收费,不同配置价格不同。例如经济型e实例2核2G每小时0.094元,计算型c9i实例2核4G每小时0.3873元,4核8G配置约0.77元/小时。价格因实例类型和资源配置而异,按量付费,先用后付。更多优惠可参与阿里云官方活动。
1474 1
|
移动开发 安全 搜索推荐
深度链接(Deep Link)实战指南:何时做?如何做?一篇讲透
本文探讨了 App 是否需要实现深度链接的问题,从产品复杂度、营销需求和用户旅程三个维度分析,帮助判断深度链接的最佳接入时机,并提供实操建议。
834 5
|
机器学习/深度学习 数据采集 人工智能
《解锁Kaggle:从数据小白到AI大神的进阶之路》
Kaggle被誉为数据科学领域的“GitHub”,拥有丰富的数据集、实战竞赛和用户内核,是提升数据处理与人工智能技能的理想平台。新手可从简单数据集入手,学习数据清洗、分析与可视化;进阶者则可通过复杂数据集和竞赛挑战自我,掌握高级预处理技术和模型优化。Kaggle的讨论区和内核资源提供了宝贵的学习机会,帮助用户站在巨人的肩膀上快速成长。持续参与竞赛和项目,关注最新技术动态,不断实践与积累经验,助你在数据科学领域稳步前行。
924 8
《解锁Kaggle:从数据小白到AI大神的进阶之路》
|
机器学习/深度学习 测试技术 知识图谱
DeepSeek-R1:Incentivizing Reasoning Capability in LLMs via Reinforcement Learning论文解读
DeepSeek团队推出了第一代推理模型DeepSeek-R1-Zero和DeepSeek-R1。DeepSeek-R1-Zero通过大规模强化学习训练,展示了卓越的推理能力,但存在可读性和语言混合问题。为此,团队引入多阶段训练和冷启动数据,推出性能与OpenAI-o1-1217相当的DeepSeek-R1,并开源了多个密集模型。实验表明,DeepSeek-R1在多项任务上表现出色,尤其在编码任务上超越多数模型。未来研究将聚焦提升通用能力和优化提示工程等方向。
1185 16
|
人工智能 自然语言处理 程序员
产品测评 | AI编程界的集大成者——通义灵码AI程序员
通义灵码AI程序员是阿里云推出的一款基于先进自然语言处理和深度学习技术的编程助手,集成于VS Code和JetBrains IDEs中。它覆盖从前端到后端的开发流程,支持多文件级别的代码修改、单元测试生成、多版本快照管理等高级功能,显著提升开发效率和项目管理能力。开发者可通过对话式交互完成需求理解到产品发布的全过程,实现高效敏捷开发。最新2.0版本在代码生成、跨语言编程、单元测试自动生成及图生代码等方面有显著提升,进一步优化了用户体验。