iOS 开发流程笔记

目录导航 证书知识及准备工作 几种开发者帐号区别 真机调试流程 内测发布流程 Appstore 上架流程

证书知识及准备工作 基础问题答疑 什么是证书 由 apple 官方颁发, 用以证明开发者身份的特殊文件, 在 iOS 开发中主要用于代码签名, 保障 iOS 生态的健康安全, 分为开发者证书和发布者证书

什么时候需要证书 只有在本机模拟器调试时无需代码签名, 当 App 需要在真机运行和发布时需要使用相应证书进行签名

证书如何获得 首先需要拥有相应权限的开发者帐号, 通过在本地生成配对的密钥, 向 provisioning portal 提交公钥后换取, 后续证书在使用时会验证本地私钥

如何对代码进行签名 在 xcode 中, 使用描述文件(provision profile 包含调试者证书, 授权设备清单, 应用ID), 在 Build Settings 中选择存于 Keychain Access 中的证书文件设置调试和发布任务时的代码签名

我生成的私钥如何共享给团队成员 在 Keychain Access 中找到导入的证书, 右击导出为包含私钥的 Personal Information Exchange(.p12)文件(导出时可以创建密码), 团队成员再导入 p12 证书后就完整包含了证书和私钥

各流程中证书的需求情况 模拟器调试 不需要

真机调试 描述文件(Provisioning Profiles)

开发者证书(ios_development.cer)

打包和发布 描述文件(Provisioning Profiles)

可用于发布的开发者证书(ios_distribution.cer)

消息推送后端服务 apns 证书 开发中常见的证书及相关文件介绍 CSR(certificate request) 文件 用于换取证书的公钥文件, 实际是在本地基于 RSA 加密得到配对的密钥, 私钥存于 Keychain Access 用于签名, 公钥作为换取证书的凭证

生成方法 OSX 系统自带的 Keychain Access

选择 "Request a Certificate From a Certificate Authority…"

输入 email 等信息后保存为 .certSigningRequest 文件

命令行下使用 openssl 生成

bash $ openssl genrsa -out private.key 2048 $ openssl req -new -sha256 -key private.key -out my.certSigningRequest

开发者证书 由 apple 官方颁发, 用来证明开发者资格的证书文件, 分开发(ios_development.cer)和发布(ios_distribution.cer)两种

cer 证书跟开发机(私钥)绑定只能在拥有私钥的机器上使用, 如果要迁移机器需要导出为 p12 文件

生成方法 在 开发者中心 "certificates" 面板中添加 certificate 并上传刚刚生成的 CSR 文件, 获取 ios_development.cer

apns(Apple Push Notification Service) 证书 用于服务端消息推送, 类似 ssl 证书使用, 和 App 端的开发打包没有关系

生成方法 在 开发者中心 "Identifiers" 面板中添加 App ID 并上传刚刚生成的 CSR 文件, 获取 aps_production.cer

p12(Personal Information Exchange) 证书 p12 证书实际是包含了 cer 证书及私钥信息, 可以分发给团队成员

生成方法 在 Keychain Access 中找到已经导入的 cer 证书, 点右键导出为 p12 格式

描述文件(Provisioning Profiles) 包含 certificate appID devices id 的文件用于在 xcode 调试打包时提供授权的配置信息

生成方法 在 开发者中心 "Provisioning Profiles" 面板中添加 iOS Provisioning Profiles 并上传刚刚生成的 CSR 文件, 获取 .mobileprovision 文件

在 xcode 登录开发者帐号后可以连接开发者中心获取

附录1: 开发准备相关的网址 开发者中心 https://developer.apple.com/devcenter/ios/index.action iOS 描述管理(配置证书、描述文件、推送服务) https://developer.apple.com/ios/manage/overview/index.action 切换团队(在 web 界面上死活没有找到) https://developer.apple.com/account/selectTeam.action iOS 上架 Appstore http://itunesconnect.apple.com/ 几种开发者帐号区别 详见: https://developer.apple.com/programs/start/ios/ 个人(individual) $99/year 公司(company) $99/year 企业(enterprise) $299/year 大学(University) free 关键区别 个人帐号可以真机调试, 发布 appstore, 每年 最多为 100台设备分发 公司帐号和个人帐号类似, 只有这两种帐号可以发布 appstore, 主要特权是可以添加多个开发者子账号, 但只允许主账号提交, 发布等操作, 在协同开发时比较灵活, 可以各自管理授权设备等 企业帐号无法用于 appstore 发布, 但可以不通过 appstore 发布任意 iphone 都可以安装的应用 大学帐号不能发布 appstore, 主要拥有真机调试的权限 真机调试流程 基本概念 真机调试指 mac 连上 iphone, xcode 可以直接以这台 iphone 设备为 build target, 能在 iphone 里执行编译结果

条件和流程 分为拥有独立开发者帐号(也包括公司帐号或企业帐号成员)和共享开发者帐号两种情况

拥有独立开发者帐号 在 provisioning portal 新建应用, 配置授权设备等 开发机上导入证书 在 xcode 上登录开发者帐号, 不需要准备描述文件, xcode 会自动生成(如果是公司帐号可以自动生成 iOS Team Provisioning Profile) 共享开发者帐号 如果无法在 xcode 登录一个开发者帐号, 也可以通过他人对你手机和应用 id 的授权, 得到 .mobileprovision 描述文件再导入其含私钥的证书(p12) 即可, 具体步骤如下:

获得手机的 udid (可以连上 mac, 在 itunes 中查看) 告知对方 udid (用以设备授权) 和 应用 id 得到对方生成的证书和描述文件后, 先导入 p12 证书, 再双击 mobileprovision 文件 连接手机, 在 xcode 中选择 build target 为已连接的手机 对刚入门的个人开发者而言, 可以在淘宝搜 iOS真机调试 花几元购买一份授权, 包含(p12 证书 和 .mobileprovision 描述文件) 内测发布流程 基本概念 当 App 开发进行到一定程度, 需要更多的人参与测试, 需要谋求一种方式方便应用能安装进更多的设备中

实现条件 进行内测发布主要的关键点是:

是如何将应用打包为 .ipa xcode6 以后, 个人/公司帐号无法对应用打包为 .ipa, 要么用 xcode5 打包要么拥有企业帐号级别的授权

设备需不需要授权 个人/公司帐号权限只有在 TestFlight / 越狱渠道下完成不授权安装; 企业帐号授权可以在 ad-hoc / in-house 渠道下分发, 完成不授权设备安装

几种常见的分发途径 ad-hoc 打包时必须在登录企业帐号(或其成员)并已导入证书和描述文件的情况下, 任何用户(未授权)都可以在手机上用浏览器访问一个 url(例: itms-services://?action=download-manifest&url=https://example.com/manifest.plist) 完成安装

最大的问题是安装量有 100 的上限, 无法作为一个量很大的分发渠道

in-house 针对企业内部用户进行分发, 相比 ad-hoc 无安装量上限

iOS 8.1.3 开始不能企业证书 Iresign 方式重新签名的应用无法安装 https://support.apple.com/en-us/HT204245 TestFlight 仅支持 iOS8.0 以上, 不需要对设备 udid 进行授权, 适合个人 / 公司开发者, 在应用发布前可以开启 TestFlight Beta 测试并添加测试者的 iTunes Connect 帐号, 需要待测用户拥有 iTunes Connect 帐号并在设备安装 TestFlight 客户端

这种方式非常便于推送应用更新和收集测试信息

导出 ipa 包, 越狱安装 如果测试设备都越狱了, 这种方式非常灵活简单, 只有能导出 ipa 包就能通过 itools 等第三方工具安装

附录2: 常见分发渠道及工具地址 fir-第三方应用托管平台 http://fir.im/ TestFlight https://developer.apple.com/testflight/ Agile-百度内部 ios 分发测试平台 http://agile.baidu.com fir-分发相关工具 http://fir.im/dev/tools itools http://www.itools.cn/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Web 开发

Mac下面的IE8测试环境

微软提供的IE测试虚拟机里面,Window7的自带的最小版本IE是IE8,so,从IE8测试走起。Vista是个短命的产品,至于XP,让他退役吧。

1260
来自专栏JAVA高级架构

网站性能优化实战——从12.67s到1.06s的故事

2513
来自专栏青玉伏案

iOS开发之调用系统打电话发短信接口以及程序内发短信

  在本篇博客开头呢,先说一下写本篇的博客的原因吧。目前在做一个小项目,要用到在本应用程序内发验证码给其他用户,怎么在应用内发送短信的具体细节想不大起来了,于是...

3065
来自专栏天天P图攻城狮

iOS基础开发实践:iMessage Extension浅析

2442
来自专栏开源项目

五花八门的验证码程序,你遇到过哪些?| 码云周刊第 62 期

虽然新年刚刚过去,但是春运抢票的经历仍旧记忆犹新。12306验证码已经被市面上的各种抢票软件所破解,有的人可能就在想验证码技术是不是已经过时了,小编觉得这对验证...

3275
来自专栏deepcc

在网站制作中随时可用的10个 HTML5 代码片段

50914
来自专栏FH云彩

建网站需要的东西和技术

3493
来自专栏嵌入式程序猿

如何做好J1939应用层数据定义

SAE J1939 跟CANOpen,DeviceNet等一样都隶属于CAN的高层协议,J1939广泛应用于卡车,船舶,农林等设备,也正在拓展至其他的行业,因其...

1233
来自专栏林德熙的博客

win10 uwp 弹起键盘不隐藏界面元素

本文主要讲,在我们使用手机输入的时候,会因为手机的虚拟键盘隐藏了一些界面的元素。我们有一个简单的方法让虚拟键盘不隐藏界面元素。

591
来自专栏阿杜的世界

Mac版Java开发环境配置

1423

扫码关注云+社区

领取腾讯云代金券