若是你的Apple ID帳號(可以使用郵箱來註冊)爲Apple developer類型的話,登陸以後是看不到Certificates, Indentifiers & Profiles信息的html
Apple developer是最基礎的帳號類型,主要用來在App Store下載各類應用(包括xCode等開發工具和SDK庫)及在iCloud上備份文件和照片git
可經過點擊下方的「Joining the Developer Program」連接,按照指引點擊enroll按鈕,付費99$/year以後,成爲registered Apple developergithub
此時你才能看到Certificates, IDs & Profiles按鈕,點擊以後就能夠進入Certificates, Indentifiers & Profiles面板了windows
Certificate(證書)api
Certificates(證書)是一個經證書受權中心數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件安全
用於用來給應用程序簽名(Signature)的,只有通過簽名的應用程序才能保證它的來源是可信任的,而且代碼是完整的, 未經修改的app
證書通常具備時效性,只在特定的時間段內有效。ide
蘋果的證書分爲Development和Distribution兩種。Development證書用於開發和調試應用程序,可用於真機調試;Distribution證書用於打包上傳App Store,用於驗證開發者身份svn
Certificates列表中列出證書(.cer文件)都是公鑰證書,若是這個證書是在別人機器上生成的,在機器上安裝後是沒有私鑰與其匹配的函數
注1:在mac中,能夠經過右鍵快捷菜單「快速查看XXX.cer」來查看證書的基本信息
注2:鑰匙串訪問(Keychain Access)在應用程序\實用工具(Applications\Utilities)中
你能夠在本身的機器上建立一個與本機私鑰相匹配的公鑰證書(.cer文件)
方法1:
(1)選擇證書分類,在鑰匙串訪問(Keychain Access)菜單:「鑰匙串訪問」 -- 「證書助理」 -- 「從證書頒發機構請求證書」
用戶電子郵件地址和CA電子郵件地址能夠隨便輸入一個郵箱,常見名稱爲密鑰的名稱,點擊繼續後會從蘋果官方CA(Certificate Authority,證書受權中心)獲取獲得一個證書請求文件(.certSigningRequest文件)
注:生成certSigningRequest文件過程當中,其實是生成了一對公鑰和私鑰(Key Pair),保存在你Mac的keychain中。代碼簽名正是使用這種基於非對稱祕鑰的加密方式,用私鑰進行簽名,用公鑰進行驗證。
以下圖所示,在你Mac的keychain的login中存儲着相關的公鑰和私鑰,而證書中包含了公鑰。你只能用私鑰來進行簽名,因此若是沒有了私鑰,就意味着你不能進行簽名了,因此就沒法使用這個證書了,此時你只能revoke(刪除)以前的證書再申請一個。
所以在申請完證書時,最好導出並保存好你的私鑰。當你想與其餘人或其餘設備共享證書時,把私鑰傳給它就能夠了。私鑰保存在你的Mac中,而蘋果生成的Certificate中包含了公鑰。
當你用本身的私鑰對代碼簽名後,蘋果就能夠用證書中的公鑰來進行驗證,確保是你對代碼進行了簽名,而不是別人冒充你,同時也確保代碼的完整性等
(2)在頁面上點擊「+」建立一個新證書,選擇證書類型後,須要上傳第一步中的certSigningRequest文件,來生成與本機私鑰相匹配的公鑰證書(.cer文件)
(3)下載.cer文件,雙擊或將其拖入鑰匙串訪問(Keychain Access)中進行安裝,結果以下
注:左邊有個三角形箭頭的證書是能夠點開看到專用密鑰(private key),這種證書才能用來簽名應用程序
方法2:
在菜單Xcode -- 「Preferences」的Accounts標籤頁中,登陸Apple ID帳號後,也能夠看到帳號下的證書列表
點擊左下角的+號能夠建立並安裝一個有私鑰的證書
注1:點擊左下角的+號來建立安裝一個證書時,纔會刷新XCode這個證書列表(應該是一個bug)
注2:灰色(Stauts:Not in Keychain)爲沒有安裝到鑰匙串訪問(Keychain Access)的證書
圖標上帶個x(Status:Missing Private Key)爲安裝到鑰匙串訪問(Keychain Access)但在本機找不到私鑰相匹配的公鑰證書
正常圖標爲安裝到鑰匙串訪問(Keychain Access)且本機有私鑰相匹配的證書
從鑰匙串訪問(Keychain Access)將含有私鑰的證書導出(.p12文件)給其餘mac機器使用
(1)選中證書私鑰,右鍵菜單選擇「導出xxx...」,選擇保存路徑
(2)會彈出一個框,要求填入一個對p12文件加密密碼(也能夠不填)
(3)最後,鑰匙串訪問(Keychain Access)會要求輸入當前帳號密碼來受權輸出p12證書文件
在mac上, 雙擊證書(.p12文件)或將證書拖入到鑰匙串訪問(Keychain Access)便可完成證書的安裝
在windows上,導入的iOS證書會保存到證書管理器(certmgr.msc)中
注1:可在管理器中選中對應證書進行刪除
注2:含有私鑰的證書的左上角有一個鑰匙的小圖標
UE4使用IPhonePackager.exe(chs)工具來在windows上安裝iOS證書,命令以下:
"D:/UnrealEngine/Engine/Binaries/DotNET/IOS/IPhonePackager.exe" Install Engine -project "D:/svn/TPSProject/TPSProject.uproject" -certificate "D:/txjsj_dev.p12" -bundlename "com.ten.DGame"
若是有證書的pp文件,能夠從證書管理器中導出p12格式的iOS證書,命令以下:
"D:/UnrealEngine/Engine/Binaries/DotNET/IOS/IPhonePackager.exe" ExportCertificate "D:/svn/TPSProject/TPSProject.uproject" "D:/DGame.mobileprovision" -outputcertificate "D:/mycertificate.p12"
注:生成出來的mycertificate.p12的密碼(在UnrealEngine\Engine\Source\Programs\IOS\iPhonePackager\CompileTime.cs的ExportCertificate函數中寫死)爲:A
擴展閱讀:udn:iPhonePackager Tool(中文)
UE4會在「平臺」 -- 「iOS」中列出當前機器上安裝的全部的iOS證書和PP文件
勾選某個證書和PP文件後,會將選中的證書和PP文件的名稱記錄在DefaultEngine.ini中
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
MinimumiOSVersion=IOS_10
bSupportsPortraitOrientation=False
bSupportsUpsideDownOrientation=False
bSupportsLandscapeLeftOrientation=True
PreferredLandscapeOrientation=LandscapeLeft
MobileProvision=DGame.mobileprovision
BundleIdentifier=com.ten.DGame
SigningCertificate=iPhone Developer: cert RDM (CFG5EWN5ME)
App ID
App ID用於標識一個或者一組應用程序,App ID須要與應用程序的Bundle ID是一致的或者匹配的
App ID主要有如下兩種:
Explicit App ID:惟一的App ID,這種App ID用於惟一標識一個應用程序,例如com.ten.DGame,標識Bundle ID爲com.ten.DGame的程序
Wildcard App ID:通配符App ID,用於標識一組應用程序。如:*可表示全部應用程序,com.*可表示以com.開頭的全部應用程序,com.ten.*可表示以com.ten開頭的全部應用程序
Device(設備)
Devices即設備, Devices中包含了該帳戶中全部可用的設備。 每臺設備使用UDID(形如:0f3f1a4430543305f21f17cb49d0c0f3f1a44305,由40個16進制數字組成的字符串,共160 bits)來惟一標識
每一個帳戶中的設備數量限制是100個,Disable一臺設備也不會增長名額,只能在membership year開始的時候才能經過刪除設備來增長名額。詳見:關於iOS測試機個數上限的詳細規則
查看設備UDID
方法1:
(1)將手機經過數據線查到電腦,並在手機上信任此電腦後,就能夠在iTune中查看手機的UDID
(2)以下能夠看到當前手機的UDID(注:如顯示爲序列號、ECID、型號識別符等,請點擊切換到UDID)
方法2:將手機經過數據線查到電腦,並在手機上信任此電腦後,在Xcode菜單「Window」 -- 「Devices and Simulators」的Devices面板中查看手機的UDID
Provisioning Profiles(PP文件)
Profiles即爲Provisioning Profiles文件(後綴名爲.mobileprovision),簡稱PP文件
PP文件包含了上述的全部內容:證書、App ID、設備,決定應用程序能在那些設備上運行
注1:PP文件也分爲Development和Distribution兩種,必須與證書相對應
即Development的PP文件要使用Development的證書,Distribution的PP文件要使用Distribution的證書
注2:Development的PP文件才容許使用xCode進行調試
注3:PP文件能夠關聯多張證書,多個設備
注4:Distribution類型的PP文件又分爲In House(配合企業證書使用,沒有設備限制)、Ad Hoc(只能運行在該帳戶內已登記的可用設備上,最多100個設備)、App Store(上架App Store用,沒有設備限制)
在打包或者在真機上運行一個應用程序,咱們首先須要證書來進行簽名,用來標識這個應用程序是合法的、安全的、完整的等等;
而後須要指明它的App ID,而且驗證Bundle ID是否與其一致;再次,若是是真機調試,須要確認這臺設備可否用來運行程序。
PP文件把這些信息所有打包在一塊兒,方便咱們在調試和發佈程序打包時使用,這樣咱們只要在不一樣的狀況下選擇不一樣的profile文件就能夠了
PP文件會在打包時嵌入.ipa的包裏(即名爲embedded.mobileprovision的文件)
在一臺設備上啓動應用程序時,會用PP文件進行以下校驗:
Mac機器上PP文件的安裝目錄爲:/Users/<用戶名>/Library/MobileDevice/Provisioning Profiles
中文路徑爲:/用戶/<用戶名>/資源庫/MobileDevice/Provisioning Profiles
注:該目錄在Finder中不可見,可經過菜單「前往」 -- 「前往文件夾...」來打開
或者在Terminal終端中查看 cd ~/Library/MobileDevice/Provisioning\ Profiles
注1:上圖中mobileprovision文件名中的UUID是從mobileprovision文本文件中讀取的
<key>UUID</key>
<string>672e56b7-d5e2-45a2-acc8-00f6cde47063</string>
注2:mobileprovision文件原始的文件名也存儲在mobileprovision文本文件中
<key>Name</key>
<string>PP20190723_1120</string>
注3:能夠從Xcode中將Apple ID帳號中的PP文件同步到本地
在windows上,PP文件安裝目錄爲:%homepath%\Appdata\Local\Apple Computer\MobileDevice\Provisioning Profiles
在Xcode中開發應用時,能夠從項目工程中設置其使用的PP文件,讓其對ipa文件進行簽名輸出(CodeSign)
注1:點擊Provisioning Profile後面的上下箭頭,會彈出快捷菜單
Import Profile:可導入本地的一個PP文件到PP文件的安裝目錄
Download Profile:若在Xcode中登陸了Apple ID帳號,會列出帳號中擁有的PP文件
注2:也能夠勾選「Automatically manage signing」,讓Xcode來自動管理
注3:當在Xcode中登陸了Apple ID帳號,「Automatically manage signing」下能夠看到一個iOS Team Provisioning Profile的PP文件
該PP文件爲Development類型,是利用Apple ID帳號中的最大範圍的App ID + 全部的證書 + 全部設備自動生成出來的
鼠標放在該PP文件圖標上拖曳到Terminal終端中能夠看到該PP文件存放的路徑,如:/Users/<用戶>/Library/MobileDevice/Provisioning\ Profiles/d563efb3-d555-4921-81eb-c9a32ddac164.mobileprovision
將安裝目錄中的該文件刪除,而後在Xcode中登陸Apple ID帳號並勾選「Automatically manage signing」,會強制利用Apple ID帳號中的資源從新生成出最新的iOS Team Provisioning Profile的PP文件
更詳細地設置在BuildSetting中
Keys(extra service)
Keys定義了開啓了那些Service,如上DGame該值爲2,表明開啓了Apple Push Notifications service (APNs)和DeviceCheck服務
Apple Push Notifications service (APNs)
Establish connectivity between your notification server and the Apple Push Notification service. One key is used for all of your apps.
DeviceCheck
Access per-device, per-developer data that your associated server can use in its business logic. One key is used for all of your apps.
其餘
Xcode中共享developerprofile來共享Apple ID帳號
(1)在Xcode登陸Apple ID帳號,點擊左下角螺母圖標,彈出快捷菜單「Export Apple ID and Code Signing Assets」輸入保護密碼後,就可導出開發者帳號(*.developerprofile)
(2)在其餘機器上對應位置的快捷菜單「Import Apple ID and Code Signing Assets」輸入保護密碼來導入該文件
注:developerprofile文件實際爲一個zip文件,改後綴解壓後,裏面文件列表以下:
參考
How to Submit An App to Apple: From No Account to App Store Part1
How to Submit An App to Apple: From No Account to App Store Part2