iOS 开发流程笔记

2018-05-17 16:05:05 浏览数 (1)

目录导航 证书知识及准备工作 几种开发者帐号区别 真机调试流程 内测发布流程 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 人点赞