由 apple 官方颁发, 用以证明开发者身份的特殊文件, 在 iOS 开发中主要用于代码签名, 保障 iOS 生态的健康安全, 分为开发者证书和发布者证书
只有在本机模拟器调试时无需代码签名, 当 App 需要在真机运行和发布时需要使用相应证书进行签名
首先需要拥有相应权限的开发者帐号, 通过在本地生成配对的密钥, 向 provisioning portal 提交公钥后换取, 后续证书在使用时会验证本地私钥
在 xcode 中, 使用描述文件(provision profile 包含调试者证书, 授权设备清单, 应用ID), 在 Build Settings
中选择存于 Keychain Access
中的证书文件设置调试和发布任务时的代码签名
在 Keychain Access
中找到导入的证书, 右击导出为包含私钥的 Personal Information Exchange(.p12)文件(导出时可以创建密码), 团队成员再导入 p12
证书后就完整包含了证书和私钥
不需要
用于换取证书的公钥文件, 实际是在本地基于 RSA
加密得到配对的密钥, 私钥存于 Keychain Access
用于签名, 公钥作为换取证书的凭证
.certSigningRequest
文件
$ 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
用于服务端消息推送, 类似 ssl 证书使用, 和 App 端的开发打包没有关系
在 开发者中心 “Identifiers” 面板中添加 App ID
并上传刚刚生成的 CSR
文件, 获取 aps_production.cer
p12
证书实际是包含了 cer
证书及私钥信息, 可以分发给团队成员
在 Keychain Access 中找到已经导入的 cer
证书, 点右键导出为 p12
格式
包含 certificate
appID
devices id
的文件用于在 xcode 调试打包时提供授权的配置信息
iOS Provisioning Profiles
并上传刚刚生成的 CSR
文件, 获取 .mobileprovision
文件
开发者中心 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/
真机调试指 mac 连上 iphone, xcode 可以直接以这台 iphone 设备为 build target, 能在 iphone 里执行编译结果
分为拥有独立开发者帐号(也包括公司帐号或企业帐号成员)和共享开发者帐号两种情况
iOS Team Provisioning Profile
)如果无法在 xcode 登录一个开发者帐号, 也可以通过他人对你手机和应用 id 的授权, 得到 .mobileprovision
描述文件再导入其含私钥的证书(p12
) 即可, 具体步骤如下:
udid
(可以连上 mac, 在 itunes 中查看)udid
(用以设备授权) 和 应用 idp12
证书, 再双击 mobileprovision
文件对刚入门的个人开发者而言, 可以在淘宝搜
iOS真机调试
花几元购买一份授权, 包含(p12
证书 和.mobileprovision
描述文件)
当 App 开发进行到一定程度, 需要更多的人参与测试, 需要谋求一种方式方便应用能安装进更多的设备中
进行内测发布主要的关键点是:
.ipa
xcode6 以后, 个人/公司帐号无法对应用打包为 .ipa
, 要么用 xcode5 打包要么拥有企业帐号级别的授权
个人/公司帐号权限只有在 TestFlight
/ 越狱渠道下完成不授权安装; 企业帐号授权可以在 ad-hoc
/ in-house
渠道下分发, 完成不授权设备安装
打包时必须在登录企业帐号(或其成员)并已导入证书和描述文件的情况下, 任何用户(未授权)都可以在手机上用浏览器访问一个 url(例: itms-services://?action=download-manifest&url=https://example.com/manifest.plist) 完成安装
最大的问题是安装量有 100 的上限, 无法作为一个量很大的分发渠道
针对企业内部用户进行分发, 相比 ad-hoc
无安装量上限
iOS 8.1.3 开始不能企业证书 Iresign 方式重新签名的应用无法安装 https://support.apple.com/en-us/HT204245
仅支持 iOS8.0 以上, 不需要对设备 udid
进行授权, 适合个人 / 公司开发者, 在应用发布前可以开启 TestFlight Beta 测试并添加测试者的 iTunes Connect 帐号, 需要待测用户拥有 iTunes Connect 帐号并在设备安装 TestFlight
客户端
这种方式非常便于推送应用更新和收集测试信息
如果测试设备都越狱了, 这种方式非常灵活简单, 只有能导出 ipa 包就能通过 itools 等第三方工具安装
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/
@TODO
@TODO
@TODO 待同步更新完善