证书知识及准备工做ios
几种开发者账号区别git
真机调试流程github
内测发布流程web
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 证书
用于换取证书的公钥文件, 实际是在本地基于 RSA
加密获得配对的密钥, 私钥存于 Keychain Access
用于签名, 公钥做为换取证书的凭证
OSX 系统自带的 Keychain Access
选择 "Request a Certificate From a Certificate Authority…"
输入 email 等信息后保存为 .certSigningRequest
文件
命令行下使用 openssl 生成
$ 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 调试打包时提供受权的配置信息
在 开发者中心 "Provisioning Profiles" 面板中添加 iOS Provisioning Profiles
并上传刚刚生成的 CSR
文件, 获取 .mobileprovision
文件
在 xcode 登陆开发者账号后能够链接开发者中心获取
开发者中心 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/
我的(individual) $99/year
公司(company) $99/year
企业(enterprise) $299/year
大学(University) free
我的账号能够真机调试, 发布 appstore, 每nian 最多为 100台设备分发
公司账号和我的账号相似, 只有这两种账号能够发布 appstore, 主要特权是能够添加多个开发者子帐号, 但只容许主帐号提交, 发布等操做, 在协同开发时比较灵活, 能够各自管理受权设备等
企业账号没法用于 appstore 发布, 但能够不经过 appstore 发布任意 iphone 均可以安装的应用
大学账号不能发布 appstore, 主要拥有真机调试的权限
真机调试指 mac 连上 iphone, xcode 能够直接以这台 iphone 设备为 build target, 能在 iphone 里执行编译结果
分为拥有独立开发者账号(也包括公司账号或企业账号成员)和共享开发者账号两种状况
1. 在 provisioning portal 新建应用, 配置受权设备等
2. 开发机上导入证书
3. 在 xcode 上登陆开发者账号, 不须要准备描述文件, xcode 会自动生成(若是是公司账号能够自动生成 iOS Team Provisioning Profile
)
若是没法在 xcode 登陆一个开发者账号, 也能够经过他人对你手机和应用 id 的受权, 获得 .mobileprovision
描述文件再导入其含私钥的证书(p12
) 便可, 具体步骤以下:
1. 得到手机的 udid
(能够连上 mac, 在 itunes 中查看)
2. 告知对方 udid
(用以设备受权) 和 应用 id
3. 获得对方生成的证书和描述文件后, 先导入 p12
证书, 再双击 mobileprovision
文件
4. 链接手机, 在 xcode 中选择 build target 为已链接的手机
对刚入门的我的开发者而言, 能够在淘宝搜
iOS真机调试
花几元购买一份受权, 包含(p12
证书 和.mobileprovision
描述文件)
当 App 开发进行到必定程度, 须要更多的人参与测试, 须要谋求一种方式方便应用能安装进更多的设备中
进行内测发布主要的关键点是:
1. 是如何将应用打包为 .ipa
xcode6 之后, 我的/公司账号没法对应用打包为 .ipa
, 要么用 xcode5 打包要么拥有企业账号级别的受权
2. 设备需不须要受权
我的/公司账号权限只有在 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 等第三方工具安装
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/