【指導】iOS 開發流程筆記

來源:https://github.com/leecade/ios-dev-flow

證書知識及準備工作

基礎問題答疑

什麼是證書

由 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/

關鍵區別

  • 個人帳號可以真機調試, 發佈 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. 獲得手機的 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 等第三方工具安裝

附錄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) 英文原版


發佈了64 篇原創文章 · 獲贊 73 · 訪問量 78萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章