首先大家要知道,開發 apple 的程式一定要先有蘋果開發者帳戶,
沒有這個帳戶下面都不用講。
進入Member後,操作畫面如圖
右側會有四塊區域,分別如下
Certificates(憑證)
可以想像成這個憑證代表開發者自己,蘋果是藉由這個憑證來認定你是否可以開發或是發佈這個 App。
憑證要如何製作呢?
製作憑證需要上傳開發者自己的 CSR(Cert Signing Request),CSR 可以從 keychain 工具產生,
而 XCode 6 之後會自動產生 Developer/Production 憑證。
Identifiers
ipa 裡指的就是 entitlements,也就是這個 APP 可以使用哪些蘋果的服務,像是
播播
票卷
群組應用程式
...
等功能
Devices(UDID)
每隻手機獨一無二的編號,用來分辦手機。
Profiles(Provisioning Profiles)中文又稱描述檔
開發者最常搞不清楚描述檔與憑證有什麼不同,又兩者有什麼關係,
被搞得一個頭兩個大。
描述檔主要包含四大部份,
- App ID
- Entitlements
- UUID List
- 憑證
先看看下面這張圖,
image error
簡單瞭解一下 ipa 如何安裝到 iOS 裝置上,
App 編繹完後,會用開發者自己的憑證(私鑰)打包產生 ipa,
使用者下載安裝這個 ipa 的時候,
ipa 裡的 Bundle ID 需要符合描述檔裡的 App ID,
ipa 裡的 Entitlements 需要符合描述檔裡的 Entitlements,
裝置的 UDID 需要列在描述檔 UUID List 裡頭,
ipa 的這組憑證(私鑰)需與描述檔裡的憑證(公鑰)配對,
配對失敗的話,蘋果認定你不是這個 APP 的開發者,而不進行安裝,
如果通過上述測試,就可以成功安裝到 iOS 裝置上。
到底有幾種描述檔?
開發用的描述檔(Development)
- 開發階段使用,需要有開發者憑證,裝置需加入 UUID List 才可以安裝。
Ad-Hoc測試用的描述檔(Ad-Hoc)
- Ad-Hoc 測試用,通常拿來測推播,需要有 Production 憑證,裝置需加入 UUID List 才可以安裝。
企業用的描述檔(Enterprise)
- 基本上同 Ad-Hoc 描述檔,但沒有 UUID 數目的限製。
商店上架用的描述檔(Apple Store)
- 只供上傳 Apple Store 審核用,沒有 UUID List。
事實上 ipa 通過 Apple 審核後,會重新打包,發佈到 Apple Store,
重新打包??
是的,Apple 會用自家專屬的憑證及描述檔重新打包,之後這個 ipa 就像有
萬能鑰匙一般可以安裝到任意 iOS 裝置上沒有任何限制。
這裡提供兩個指令方便查詢描述檔,如下:
checking provisioning profile
security cms -D -i Payload/XXX.app/embedded.mobileprovision
checking entitlements
codesign -d --entitlements - Payload/XXX.app