iOS 開發流程筆記
- 證書知識及準備工作
- 幾種開發者帳號區別
- 真機調試流程
- 內測發布流程
- Appstore 上架流程 </ul>
- 證書知識及準備工作
- 基礎問題答疑
- 什么是證書
- 什么時候需要證書
- 證書如何獲得
- 如何對代碼進行簽名
- 我生成的私鑰如何共享給團隊成員 </ul> </li>
- 各流程中證書的需求情況
- 模擬器調試
- 真機調試
- 打包和發布
- 消息推送后端服務 </ul> </li>
- 開發中常見的證書及相關文件介紹
- CSR(certificate request) 文件
- 開發者證書
- apns(Apple Push Notification Service) 證書
- p12(Personal Information Exchange) 證書
- 描述文件(Provisioning Profiles) </ul> </li>
- 附錄1: 開發準備相關的網址 </ul> </li>
- 幾種開發者帳號區別
- 關鍵區別 </ul> </li>
- 真機調試流程
- 基本概念
- 條件和流程 </ul> </li>
- 內測發布流程
- 基本概念
- 實現條件
- 幾種常見的分發途徑
- 附錄2: 常見分發渠道及工具地址 </ul> </li>
- Appstore 上架流程
- 附錄3: App store最新審核標準(2015.3) </ul> </li> </ul>
-
描述文件(Provisioning Profiles)
</li> -
開發者證書(ios_development.cer)
</li> </ul>打包和發布
-
描述文件(Provisioning Profiles)
</li> -
可用于發布的開發者證書(ios_distribution.cer)
</li> </ul>消息推送后端服務
- apns 證書 </ul>
-
OSX 系統自帶的 Keychain Access
-
選擇 "Request a Certificate From a Certificate Authority…"
</li> -
輸入 email 等信息后保存為.certSigningRequest文件
</li> </ul> </li> -
命令行下使用 openssl 生成
</li> </ul>$ 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)
包含certificateappIDdevices id的文件用于在 xcode 調試打包時提供授權的配置信息
生成方法
-
在 開發者中心 "Provisioning Profiles" 面板中添加iOS Provisioning Profiles并上傳剛剛生成的CSR文件, 獲取.mobileprovision文件
</li> -
在 xcode 登錄開發者帳號后可以連接開發者中心獲取
</li> </ul>附錄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/
</blockquote>幾種開發者帳號區別
詳見: https://developer.apple.com/programs/start/ios/
</blockquote>- 個人(individual) $99/year
- 公司(company) $99/year
- 企業(enterprise) $299/year
- 大學(University) free </ul>
- 個人帳號可以真機調試, 發布 appstore, 每年 最多為 100臺設備分發
- 公司帳號和個人帳號類似, 只有這兩種帳號可以發布 appstore, 主要特權是可以添加多個開發者子賬號, 但只允許主賬號提交, 發布等操作, 在協同開發時比較靈活, 可以各自管理授權設備等
- 企業帳號無法用于 appstore 發布, 但可以不通過 appstore 發布任意 iphone 都可以安裝的應用
- 大學帳號不能發布 appstore, 主要擁有真機調試的權限 </ul>
- 1. 在 provisioning portal 新建應用, 配置授權設備等
- 2. 開發機上導入證書
- 3. 在 xcode 上登錄開發者帳號, 不需要準備描述文件, xcode 會自動生成(如果是公司帳號可以自動生成iOS Team Provisioning Profile) </ul>
- 1. 獲得手機的udid(可以連上 mac, 在 itunes 中查看)
- 2. 告知對方udid(用以設備授權) 和 應用 id
- 3. 得到對方生成的證書和描述文件后, 先導入p12證書, 再雙擊mobileprovision文件
- 4. 連接手機, 在 xcode 中選擇 build target 為已連接的手機 </ul>
- 1. 是如何將應用打包為.ipa </ul>
- 2. 設備需不需要授權 </ul>
- ad-hoc </ul>
- in-house </ul>
- TestFlight </ul>
- 導出 ipa 包, 越獄安裝 </ul>
關鍵區別
真機調試流程
基本概念
真機調試指 mac 連上 iphone, xcode 可以直接以這臺 iphone 設備為 build target, 能在 iphone 里執行編譯結果
條件和流程
分為擁有獨立開發者帳號(也包括公司帳號或企業帳號成員)和共享開發者帳號兩種情況
擁有獨立開發者帳號
共享開發者帳號
如果無法在 xcode 登錄一個開發者帳號, 也可以通過他人對你手機和應用 id 的授權, 得到.mobileprovision描述文件再導入其含私鑰的證書(p12) 即可, 具體步驟如下:
對剛入門的個人開發者而言, 可以在淘寶搜iOS真機調試花幾元購買一份授權, 包含(p12證書 和.mobileprovision描述文件)
</blockquote>內測發布流程
基本概念
當 App 開發進行到一定程度, 需要更多的人參與測試, 需要謀求一種方式方便應用能安裝進更多的設備中
實現條件
進行內測發布主要的關鍵點是:
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
</blockquote>僅支持 iOS8.0 以上, 不需要對設備udid進行授權, 適合個人 / 公司開發者, 在應用發布前可以開啟 TestFlight Beta 測試并添加測試者的 iTunes Connect 帳號, 需要待測用戶擁有 iTunes Connect 帳號并在設備安裝TestFlight客戶端
這種方式非常便于推送應用更新和收集測試信息
如果測試設備都越獄了, 這種方式非常靈活簡單, 只有能導出 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/
</blockquote>Appstore 上架流程
<p>@TODO </p>附錄3: App store最新審核標準(2015.3)
</blockquote> https://github.com/leecade/ios-dev-flow
-
-
開發中常見的證書及相關文件介紹
CSR(certificate request) 文件
用于換取證書的公鑰文件, 實際是在本地基于RSA加密得到配對的密鑰, 私鑰存于Keychain Access用于簽名, 公鑰作為換取證書的憑證
生成方法
-
證書知識及準備工作
基礎問題答疑
什么是證書
由 apple 官方頒發, 用以證明開發者身份的特殊文件, 在 iOS 開發中主要用于代碼簽名, 保障 iOS 生態的健康安全, 分為開發者證書和發布者證書
什么時候需要證書
只有在本機模擬器調試時無需代碼簽名, 當 App 需要在真機運行和發布時需要使用相應證書進行簽名
證書如何獲得
首先需要擁有相應權限的開發者帳號, 通過在本地生成配對的密鑰, 向 provisioning portal 提交公鑰后換取, 后續證書在使用時會驗證本地私鑰
如何對代碼進行簽名
在 xcode 中, 使用描述文件(provision profile 包含調試者證書, 授權設備清單, 應用ID), 在Build Settings中選擇存于Keychain Access中的證書文件設置調試和發布任務時的代碼簽名
我生成的私鑰如何共享給團隊成員
在Keychain Access中找到導入的證書, 右擊導出為包含私鑰的 Personal Information Exchange(.p12)文件(導出時可以創建密碼), 團隊成員再導入p12證書后就完整包含了證書和私鑰
各流程中證書的需求情況
模擬器調試
不需要
真機調試
- 基礎問題答疑