天天看點

iOS 開發流程筆記(四)

  •  證書知識及準備工作
  •  幾種開發者帳号差別
  •  真機調試流程
  •  内測釋出流程
  •  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. 獲得手機的 

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

繼續閱讀