- 證書知識及準備工作
- 幾種開發者帳号差別
- 真機調試流程
- 内測釋出流程
- Appstore 上架流程
目錄導航
- 證書知識及準備工作
- 基礎問題答疑
- 什麼是證書
- 什麼時候需要證書
- 證書如何獲得
- 如何對代碼進行簽名
- 我生成的私鑰如何共享給團隊成員
- 各流程中證書的需求情況
- 模拟器調試
- 真機調試
- 打包和釋出
- 消息推送後端服務
- 開發中常見的證書及相關檔案介紹
- CSR(certificate request) 檔案
- 開發者證書
- apns(Apple Push Notification Service) 證書
- p12(Personal Information Exchange) 證書
- 描述檔案(Provisioning Profiles)
- 附錄1: 開發準備相關的網址
- 基礎問題答疑
- 幾種開發者帳号差別
- 關鍵差別
- 真機調試流程
- 基本概念
- 條件和流程
- 内測釋出流程
- 基本概念
- 實作條件
- 幾種常見的分發途徑
- 附錄2: 常見分發管道及工具位址
- Appstore 上架流程
- 附錄3: App store最新稽核标準(2015.3)
證書知識及準備工作
基礎問題答疑
什麼是證書
由 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 生成
$ 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 裡執行編譯結果
條件和流程
分為擁有獨立開發者帳号(也包括公司帳号或企業帳号成員)和共享開發者帳号兩種情況
擁有獨立開發者帳号
- 1. 在 provisioning portal 建立應用, 配置授權裝置等
- 2. 開發機上導入證書
- 3. 在 xcode 上登入開發者帳号, 不需要準備描述檔案, xcode 會自動生成(如果是公司帳号可以自動生成
)iOS Team Provisioning Profile
共享開發者帳号
如果無法在 xcode 登入一個開發者帳号, 也可以通過他人對你手機和應用 id 的授權, 得到
.mobileprovision
描述檔案再導入其含私鑰的證書(
p12
) 即可, 具體步驟如下:
- 1. 獲得手機的
(可以連上 mac, 在 itunes 中檢視)udid
- 2. 告知對方
(用以裝置授權) 和 應用 idudid
- 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 等第三方工具安裝
附錄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/
Appstore 上架流程
@TODO
附錄3: App store最新稽核标準(2015.3)
App store最新稽核标準(2015.3) 中文翻譯
App store最新稽核标準(2015.3) 英文原版