一 證書申請
參考: https://zhuanlan.zhihu.com/p/69162456
基本參考上面的文件 不過蘋果開發者中心的頁面已經有所變化, 參考時候注意下
一、概念
總覽
我們都知道開發一款應用需要配置蘋果常用證書、AppId,Provisioning Profiles,如果有推送還需要配置推送證書等,所以索性將所有的證書的配置流程都記錄下來,方便以后查閱。
App ID(bundle identifier)
App ID即Product ID,用於標識一個或者一組App。
App ID應該和Xcode中的Bundle Identifier是一致(Explicit)的或匹配(Wildcard)的。
App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier(Company ID)作為前綴(Prefix/Seed),一般不超過255個ASCII字符。
App ID全名會被追加Application Identifier Prefix(一般為TeamID.),分為兩類:
- Explicit App ID:唯一的App ID,用於唯一標識一個應用程序。例如“com.apple.garageband”這個App ID,用於標識Bundle Identifier為“com.apple.garageband”的App。
- Wildcard App ID:含有通配符的App ID,用於標識一組應用程序。例如“*”(實際上是Application Identifier Prefix)表示所有應用程序;而“com.apple.*”可以表示Bundle Identifier以“com.apple.”開頭(蘋果公司)的所有應用程序。
用戶可在Developer MemberCenter網站上注冊(Register)或刪除(Delete)已注冊的App IDs。
App ID被配置到【XcodeTarget|Info|Bundle Identifier】下;對於Wildcard App ID,只要bundle identifier包含其作為Prefix/Seed即可。
在Identifiers->Identifiers+->Register a new identifier->Register an App ID 中注冊App ID,如下圖所示:
開發證書(Certificates)
iOS證書是用來證明iOS App內容(executable code)的合法性和完整性的數字證書。對於想安裝到真機或發布到AppStore的應用程序(App),只有經過簽名驗證(Signature Validated)才能確保來源可信,並且保證App內容是完整、未經篡改的。
數字證書是一個經證書授權中心數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。具有時效性,只在特定的時間段內有效。
開發證書類型分為兩種,一種開發證書(iOS Development)一種發布證書(iOS Distribution)。開發證書(iOS Development)用於開發和調試應用程序,可用於真機調試;生產證書用於打包上傳App Store,用於驗證開發者身份。
推送證書
如果項目中集成了推送功能,同樣需要配置推送證書。推送證書同樣也分兩種:開發(Apple Development iOS Push Services)、生產(Apple Production iOS Push Services)。推送證書在AppID中創建生成,同時生成的的p12文件需要上傳到服務端后台(友盟后台、極光后台或自己服務端后台)。
配置文件(Provisioning Profiles)
配置文件同樣也分兩種,分為開發(Development)和發布(Distribution),配置文件(Provisioning Profiles)中包含了證書、App ID、設備(Devices),后綴名為.mobileprovision。它在開發者賬號體系中扮演着配置和驗證的角色,是真機調試和打包上架必須的文件。
- 一個Provisioning Profile對應一個Explicit App ID或Wildcard App ID。
- Provisioning Profile決定Xcode用哪個證書(公鑰)/私鑰組合(Key Pair/Signing Identity)來簽名應用程序(Signing Product),將在應用程序打包時嵌入到.ipa包里。
- Provisioning Profile把這些信息全部打包在一起,方便我們在調試和發布程序打包時使用。這樣,只要在不同的情況下選擇不同的Provisioning Profile文件就可以了。
- Provisioning Profile也分為Development和Distribution兩類,有效期同Certificate一樣。Development版本的ProvisioningProfile用於開發調試,Distribution版本的ProvisioningProfile主要用於提交App Store審核,其不指定開發測試的Devices。
ps:打Ad-hoc包的時候,如果遇到剛添加的設備UDID沒添加進去,可以將開發模式的配置文件下載下來,打包后直接選中即可。
在配置證書之前我們需要有一個開發賬號。個人賬號和公司賬號類似,每年都需要支付99刀,其中公司賬號需要鄧白氏編碼而個人賬號並不需要。
如果項目需要不通過App Store進行安裝,可以申請企業賬號。當然了,也可以找一些第三方直接打企業包,比如蒲公英之類的。
二、步驟
one、創建CSR文件(證書請求文件)
CSR(Certificate signing request)即證書請求文件。證書申請者在申請數字證書時由CSP(加密服務提供者)在生成私鑰的同時也生成證書請求文件(CSR文件),證書申請者只要把CSR文件提交給證書頒發機構后(創建App ID時上傳到蘋果后台),證書頒發機構使用其根證書私鑰簽名生成證書公鑰文件(開發者證書)。
關於CSR文件的創建,我們可以直接使用Mac上的鑰匙串訪問直接請求。
具體步驟為: 鑰匙串訪問 -> 鑰匙串訪問 -> 證書助理 -> 從證書頒發機構請求證書……
1、打開電腦上的鑰匙串訪問,選中證書助理;
2、用戶電子郵件地址填開發者賬號的郵箱,名稱可以隨意填,然后保存到磁盤上。
3、Keychain將生成一個包含開發者身份信息的CSR(Certificate Signing Request)文件。同時,Keychain Access->Keys(密鑰)中增加一對Public/Private Key Pair。
這個私鑰右鍵導出 .p12 格式文件 別人就可以雙擊它安裝證書(證書分享給其他人使用需要)
two、創建App ID
1、登錄蘋果開發者中心,或者直接登錄Apple Member Center選擇Certificates,Identifiers & Profiles
;
2、選擇Identifiers 中的 App IDs,然后點上方的加號;
3、添加App ID Description和Bundle ID。
- 在“Explicit App ID”欄下的“Bundle ID”項中輸入App ID(反域名格式,如:com.company.test)
- 這里“Bundle ID”對應Xcode中的“Bundle identifier” Explicit App ID:唯一的App ID,用於唯一標識一個應用程序。例如“com.apple.garageband”這個App ID,用於標識Bundle Identifier為“com.apple.garageband”的App。
- Wildcard App ID:含有通配符的App ID,用於標識一組應用程序。例如“”(實際上是Application Identifier Prefix)表示所有應用程序;而“com.apple.”可以表示Bundle Identifier以“com.apple.”開頭(蘋果公司)的所有應用程序。
- 在“App Services”欄下選擇應用要使用到的服務(如要使用推送功能,勾選“Push Notifications”)
- 點擊continue->點擊submit->點擊done,申請App IDs完成。點擊All IDs可查看申請的ID,點擊該ID
- 點擊 對應名稱 可對該App ID進行編輯
創建開發者證書 和 推送證書
1、選擇Certificates,然后選擇上方的加號;
2、選擇相應的證書,因為開發調試證書、生產發布證書、開發環境推送證書、生產環境推送證書基本都類似,所以這里只選擇開發調試證書為例。
3、一路點擊Continue, 到Generate后選擇一開始生成的CSR文件上傳,然后再繼續點擊Continue。
4、生成完開發調試、生成調試證書 和 開發環境推送證書、生成環境推送證書,可以在“Certificates”->“All”中查看該證書,並進行下載或刪除。
5、下載到桌面上,然后雙擊添加到鑰匙串中,可在Keychain Access->“證書”中查看。 (分享給其他人使用需要)
由於我們使用友盟,生成的推送證書(開發環境和生產環境)需要從鑰匙串訪問中導出p12文件,添加到友盟后台。
推送證書 導出p12文件上傳到友盟(極光)后台
1、由上一步創建了開發環境的推送證書和生成環境的推送證書,下載到電腦上后,直接雙擊即可安裝到鑰匙串中。
2、選中相應證書(開發環境推送證書或生成環境推送證書)右鍵 導出;
3、點擊存儲后需要輸入密碼,密碼要記住,上傳到友盟(極光)后台時,需要用到。
* 創建配置文件(Provisioning Profiles)(安裝到真機使用)
1、選中Provisioning Profiles 然后選中上方的加號。
2、配置文件也分為開發和發布,我們這里以Ad Hoc為例,因為我們打測試包的時候,如果有些設備的UDID未添加進配置文件中,我們需要下載配置文件手動選擇。而其他的的配置文件目前的Xcode會自動請求,所以一般不需要我們自己手動創建。
3、選擇剛創建的App ID,選擇相應證書、選擇測試的設備,然后創建名稱一直點擊Continue即可,最后下載下來。
4、下載到本地。
(1)、自動設置:
自動管理證書后xcode會根據賬號證書和蘋果開發者中心設置的內容,自動生成描述文件並下載到機器中使用。如下圖:
(2)、手動設置:
下載到本地的Provisioning Profile,雙擊自動安裝到xcode中,在XcodeTarget->Build Settings->Code Signing->Provisioning Profile中可看到此項。
如下圖,選擇此項配置文件,“Code Signing Identity”中會默認顯示所關聯的證書文件(即創建該配置文件時選擇關聯的證書,可有多個)。
build settings 配置不要忘記
在XcodeTarget->Build Settings->Code Signing->Provisioning Profile可選擇“Automatic”,xcode會根據該Target的“Bundle identifier”選擇默認的配置文件及證書。
到此為止證書和配置文件之類的都創建完了~~
總結:
- 導出p12證書的時候需要密碼,上傳到友盟(極光)后台需要輸入密碼。
- 開發和生成的推送證書創建成功后,到相應App ID 下查看是否有,如果沒有可以停段時間刷新下,或下載下來手動上傳上去。
- 新添加上的測試機的UDID,打包的時候沒打包上去,需要重新創建配置文件,下載后將本地的刪除,然后雙擊。不過剛添加UDID,重新創建配置文件后,我一般在打包的時候手動選擇配置文件。
- 證書傳給其他人用的話 下圖的幾個文件丟給他 (左邊第一個文件不用傳 其他的文件都是雙擊安裝)
- 如果出現下圖 說明簽名 ok 了
二 xcode 打包 ipa
1. Archive 編譯工程
xcode設置編譯設備,只能選擇iOS Device,選擇其他模擬器是不能Archive的
然后選擇 Product => Archive 成功后 點擊右邊的 distribute app 進行打包, 選擇第二項 意思就是 打的包可以在指定 設備上安裝(超級簽就是這個道理)
然后 next 選擇路徑 然后導出 后面腳本打包有用到 ExportOptions.plist
xcode 打包就結束了
三 腳本打包
腳本打包主要是用到 2 個命令 參考下 https://github.com/liugangios/XcodeAutoBuild/blob/master/xcodebuild.sh
xcodebuild archive (用於編譯) 和 xcodebuild - exportArchive(打包)
第一個腳本的
xcodebuild archive -workspace HelloCordova.xcworkspace -scheme HelloCordova -configuration Release -archivePath ./configBuild/HelloCordova.xcarchive -quiet
xcodebuild -exportArchive -archivePath ./configBuild/HelloCordova.xcarchive -exportPath ./config/ipa-app-store -exportOptionsPlist ./config/ExportOptions.plist -allowProvisioningUpdates -quiet
比較坑的是 第二個腳本的 exportOptionsPlist 這個是需要用到 xcode 打包時候生成的那個 plist 第二部 xcode 打包最后一步標紅文字
你打開看下就可以看到 這個字典文件里面就是包含了寫 你要用xcode 的自動還是手動方式打包, 打的是開發的包還是正式的包 用的哪個簽名 用戶組字符串是什么等信息
執行上面 2 行腳本