過完年回來app上架到App Store,雖然之前上架過,還是遇到不少坑,特別是配置證書的時候,還好是上架是一次性通過,整理一份詳細圖文詳解。項目是flutter項目上架到App Store,與原始的iOS上架還是有些差別。
macOS 10.15.7
Flutter 2.0.6
Xcode Version 12.4
vscode
d eveloper.apple.com 點擊“Account”欄目
如果該App需要多人協(xié)作開發(fā),請進入People進入人員編輯。注意負責上架AppStore的人員需要有管理級別的權(quán)限
然后點擊 Certificates, Identifiers & Profiles 圖標
Certificates作用是為Mac電腦提供開發(fā)能力,具有Certificates的Mac電腦能夠真機調(diào)試、打包、上架APP到app store。
Certificates有兩種環(huán)境:開發(fā)( Development )環(huán)境和生產(chǎn)( Distribution )環(huán)境。Certificates還有兩種類型:Software 和 Services。
簡單理解:
(1).開發(fā)環(huán)境(Development):直接用Xcode調(diào)試debug就屬于開發(fā)環(huán)境,在模擬器上debug是不需要Certificates的。但是在真機上調(diào)試運行就需要Certificates開發(fā)證書,發(fā)布到APP Store 需要 Certificates 生產(chǎn)證書。
(2).生產(chǎn)環(huán)境(Distribution):上架app store,打包生成ipa包等都屬于生產(chǎn)環(huán)境。只要是通過Archive生成都都是屬于生產(chǎn)環(huán)境。
(3). Software: 使mac具有相應的開發(fā)和發(fā)布能力,一臺Mac只需要建立一套即可。
(4). Services: Apple提供的額外服務,最常見的就是消息推送服務,會針對不同的App建立不同的Services Certificates,畢竟每個app需要的Services不同。
針對Software部分需要注意:
Certificates是對Mac電腦有效的,是根據(jù)Mac的CSR請求證書創(chuàng)建的,而不是對app,所以Certificates的開發(fā)(Development)證書和發(fā)布(Distribution)證書是有數(shù)量限制的。超過數(shù)量就不能再創(chuàng)建了,除非刪除已有的證書。
只要你這個Mac電腦擁有了Certificates證書,就能用申請Certificates的賬號在這個Mac上開發(fā)多個app而不需要再重新申請Certificates。所以正確操作是,對一個Mac電腦,只需要申請一套Certificates就好了,在創(chuàng)建第二個第三app時不需要再去創(chuàng)建一套Certificates。
Services的證書是需要另外創(chuàng)建的,而且沒有數(shù)量限制,但是還是建議只用一臺Mac創(chuàng)建就好,他人合作導出 p12文件給對方Mac安裝即可。
Software和Services都是和Mac綁定的:
Certificates是和Mac綁定的,不能直接copy給其他Mac使用,但是Certificates可以導出 p12給其他Mac電腦用的,導出的 p12同樣具有測試打包和發(fā)布的能力。如果多人協(xié)同開發(fā),第二個Mac也是不需要再去申請一套Certificates的。用他人Mac電腦上Certificates導出的 p12文件安裝上即可。
Certificates:證書
(1) 通過Mac鑰匙串管理工具生成CSR請求文件,用于申請Certificates,與Certificates綁定
這里需要注意,不要選中證書列表中的某個證書,否則菜單就不是這個。
郵箱地址填一個,選擇存儲到磁盤,會正常一個 certSigningRequest文件,重命名一下,便于識別。
(2) 申請開發(fā)Development證書 先創(chuàng)建software部分,再創(chuàng)建推送證書部分。
選擇iOS Development ,創(chuàng)建iOS Development 開發(fā)證書。Xcode11以上可以創(chuàng)建Apple Development 證書.
continue 下一步
選擇剛剛的證書文件,
下載下來,名稱是 development.cer, 如果是選擇了iOS App Development 證書則名稱是 ios development.cer,最好改一下名稱,方便識別。
然后雙擊按鈕,打開鑰匙串管理工具,在我的證書 就能看到安裝了,需要注意的是現(xiàn)實的名稱 不是文件名,是你開發(fā)者賬號的個人team名稱,里面的秘鑰名稱就是你剛剛填寫的名稱
(3) 申請iOS Distribution (App Store and Ad Hoc)生產(chǎn)證書
方法與上面一樣,只是選擇的時候選iOS Distribution (App Store and Ad Hoc)類型
然后上傳CSR文件,Register,Download, 該名稱。
(4) 推送證書申請
推送證書的申請與第二部分是一樣的,只是中間會讓選擇證書綁定的App id。(這里需要先創(chuàng)建Identifiers,查看步驟2.Identifiers:App 身份證) 同樣,需要申請Development和Distribution兩種環(huán)境。
選擇Mac鑰匙串工具導出的 certSigningRequest文件,與這臺Mac綁定。
iOS每個APP都有自己唯一的身份證(Identifiers)。app的身份證就在這里申請,也就是app的唯一標識。
填寫app描述,和Bundle ID
關于Bundle ID:十分重要的東西,可以理解為app的身份證號碼。所有app都是唯一的。為了避免重復和辨識,一般都采用反域名的格式+app名稱。
如圖所示。這里一經(jīng)申請變無法更改,在每個項目建立時就應該事先定義好app的Bundle ID。Bundle ID除了這里申請app需要用到以外,在申請第三方服務:如微信登陸、友盟推送、google服務等等都需要使用到Bundle ID與你的app綁定。所以,Bundle ID非常重要。
一般,我們會采用Explicit(明確的)Bundle ID標識,而不會采用Wildcard(通配符)來定義Bundle ID。如果采用了,會導致推送這部分是沒用的。
然后Register,回到 identifiers列表頁可以看到剛剛創(chuàng)建的。
app的每個設備都有唯一的udid。將udid加入到Devices列表后,這些設備具有debug測試和ad hoc安裝能力。
反正,需要測試的iPhone,iPad都需要加入到這個列表里面。
Devices設備列表是針對開發(fā)者賬號,所以也只需要添加一次。
如何查看設備的udid。有很多方法,
1.Xcode查看(開發(fā)者查看自己的)
2.用蒲公英 www.pgyer.com / tools / udid
描述文件Profiles將team、Identifiers、Certificates、Devices等信息聯(lián)系起來。
Profiles同樣分為兩種環(huán)境:開發(fā)(Development)環(huán)境和發(fā)布(Distribution)環(huán)境,不同的環(huán)境需建立不同的描述文件Profiles。
描述文件是這對app綁定的,所以每個APP都會建立相應的一套描述文件。但是描述文件可copy給其他Mac使用,但是對于的Mac需要安裝相應的Certificates導出的 p12文件。
將上面創(chuàng)建的所有信息聯(lián)系起來,供xcode使用。同樣分別創(chuàng)建Development和Distribution兩種環(huán)境的描述文件
選擇App ID
選擇對應的 certificates證書,開發(fā)對應開發(fā),生產(chǎn)對應生產(chǎn),注意是當前項目的證書,不要選擇其他項目的證書。
開發(fā)環(huán)境和Ad Hoc需要選擇需要測試的Devices設備,選中的Devices才具有測試和安裝能力。全選即可。
然后下載,重命名。描述文件不需要安裝
至此所有準備的證書和描述文件都創(chuàng)建完畢。
(1)登錄Xcode開發(fā)者賬號,這一步容易忘記,特別是新的蘋果賬號,當然也可以到里面選擇證書再配置
(2) 配置證書及簽名 首先需要取消Automatically manage signing。否則是XCode自動管理證書,會自動創(chuàng)建證書和bundle id等。這樣會不利于證書管理。我這里就采坑了,導致自動安裝了其他的證書,導致生產(chǎn)證書 Xcode Signing certificate is invalid when build on ext device 只好到鑰匙串中刪除,剛剛自動按鈕的證書,退出Xcode,重新打開就可以了。配置profile描述文件,需要為debug和release兩種環(huán)境分別配置描述文件。選擇3.6章節(jié)里創(chuàng)建的對應的描述文件,debug對應development, release對應Distribution。
provisonint Profile 文件選擇,開發(fā)對應著開發(fā),生產(chǎn)對應著生產(chǎn)。
此處可能會有個小坑,與鑰匙串安裝的cer 不對應,Buuld Settings 重新選擇一下就可以了
套裝ID 就是申請的indentifiers,選擇
填寫App資料,需要注意幾點:
APP圖標時,圖標中不能包含alpha通道或者透明度;LanchImage的圖片格式只能是png格式,jpg格式Xcode無法加載成功;填寫聯(lián)系人的時候,需要加區(qū)號,比如中國 需要+86;App預覽與截屏圖片,需要6.5英寸和5.5英寸就行,UI設計圖的時候:5.5英寸 1242?×?2208 ;6.5英寸 1242?×?2688
(1)多臺Mac運行相同iOS項目。
是與生成csr的mac電腦綁定的,其他的Mac 電腦無法安裝,這樣其他的Mac電腦就無法真機測試打包這個iOS項目了。但是,我們可以在鑰匙串中導出 p12文件給其他的Mac安裝,安裝后這臺Mac也具有同樣打包測試發(fā)布能了。開發(fā)需要導入developer證書,發(fā)布需要導出Distribution證書。選擇對應的證書,導出
最好重新命名方便識別。 p12文件其實就加密的 cer證書。可以copy給其他Mac安裝。
第二臺Mac安裝 p12后,進行第四章的XCode配置后即可具有開發(fā)、測試、發(fā)布iOS的能力
(2)多人多臺Mac開發(fā)相同ios項目 如果不方便把開發(fā)者賬號和密碼給其他人用,需要把對應開發(fā)人員加入到 開發(fā)者成員中。
隨后新用戶會收到一封邀請郵件,同意后即會加入開發(fā)者計劃中。新用戶登陸蘋果開發(fā)者中心,會看到自己加入的team
新用戶用剛剛導出 p12文件在Xcode上配置就可以協(xié)同開發(fā)ios項目。
(1)打包并上傳IPA包 首先確保證書正確、profile描述文件正確。
需要注意的是build構(gòu)建號 每次都是唯一的,version為版本號,多個版本號可以屬于同一個version,
flutter項目也可以直接 改pubspec.yaml文件 version字段 如:1.0.0+1
設備選擇:
flutter項目需要注意:需要執(zhí)行 flutter build ios -- release -- no - codesign,需要注意的是是在flutter外層目錄路徑下執(zhí)行,而不是ios目錄路徑,(我習慣在vscode中跑命令)
Product > Archive:
直接Distribute App (如果不放心可以先Validate App)
進入Select a method of distribution(打包方式選擇)界面:
App Store:App Store上架包用
Ad hoc:發(fā)布測試包用,如蒲公英發(fā)布
Enterprise:企業(yè)包用
Development:開發(fā)包用
根據(jù)自己的證書和描述文件選擇,在這里選擇App Store,點擊Next
Select a destination : 選擇是直接上傳還是導出,直接上傳就可以
Select certificate and iOS App Store profile: 之前創(chuàng)建的描述文件
然后等待上傳
上傳成功之后,需要進入 App Store Connect, 看到
看到剛剛提交的版本,然后點擊App Store ,如果第一次發(fā)版,直接在 “構(gòu)建版本” 選擇對應的版本文件,如果是已經(jīng)上架成功,需要更新版本
填寫完整的信息,提交審核。
上架之后App Store還搜索不到APP如何下載體驗
如果已經(jīng)上架,但是App Store還搜索不到APP,剛剛通過的需要等24小時,可以去「七麥數(shù)據(jù)」查看