macOS開發(fā) 證書等配置/打包后導出及上架



首先需要為Mac App創(chuàng)建App ID

1.選擇'App IDs'項
2.選擇類型為'App'

填寫信息如下—Description為"ProjectNameForMac"飘弧、Bundle ID為"com.CompanyName.ProjectName"!

填寫的信息

創(chuàng)建成功后:該App ID的名稱為“ProjectNameForMac”搭盾、Identifier為“com.CompanyName.ProjectName”(App的Bundle ID)

有了該App ID



接下來為App創(chuàng)建證書

Mac證書類型:

  • Mac Development——開發(fā)證書(證書名稱:Mac Developer: TeamMemberName
    Sign development versions of your Mac app.
    簽署Mac應用程序的開發(fā)版本

  • Mac App Distribution——App發(fā)布證書(證書名稱:3rd Party Mac Developer Application: TeamName
    This certificate is used to code sign your app and configure a Distribution Provisioning Profile for submission to the Mac App Store.
    此證書用于對你的App進行代碼簽名婉支,并為提交Mac App Store配置分發(fā)配置文件鸯隅。

  • Mac Installer Distribution——安裝包發(fā)布證書(證書名稱:3rd Party Mac Developer Installer: TeamName
    This certificate is used to sign your app's Installer Package for submission to the Mac App Store.
    此證書用于名的你的應用程序安裝包提交Mac App Store

  • Developer ID Installer——開發(fā)者ID安裝包證書(證書名稱:Developer ID Installer: TeamName
    This certificate is used to sign your app's Installer Package for distribution outside of the Mac App Store.
    此證書用于對你應用程序安裝包進行簽名磅摹,以在Mac App Store之外可以分發(fā)滋迈。

  • Developer ID Application——開發(fā)者ID應用證書(證書名稱:Developer ID Application: Team Name
    This certificate is used to code sign your app for distribution outside of the Mac App Store.
    此證書用于對您的應用程序進行代碼簽名,以在Mac App Store之外可以分發(fā)户誓。


  • 創(chuàng)建“Mac Development”證書——開發(fā)證書
選擇“Mac Development”項
使用“CertificateSigningRequest.certSigningRequest”證書

證書創(chuàng)建好:可點擊“Download”下載饼灿!

創(chuàng)建好“Mac Development”證書

下載后的“Mac Development”證書:

下載后的“Mac Development”證書


  • 創(chuàng)建“Mac App Distribution”證書——App發(fā)布證書
選擇“Mac App Distribution”項
使用“CertificateSigningRequest.certSigningRequest”證書

證書創(chuàng)建好:可點擊“Download”下載!

創(chuàng)建好“Mac App Distribution”證書

下載后的“Mac App Distribution”證書:

下載后的“Mac App Distribution”證書


  • 創(chuàng)建“Mac Installer Distribution”證書——安裝包發(fā)布證書
選擇“Mac Installer Distribution”項
使用“CertificateSigningRequest.certSigningRequest”證書

證書創(chuàng)建好:可點擊“Download”下載帝美!

創(chuàng)建好“Mac Installer Distribution”證書

下載后的“Mac Installer Distribution”證書:

下載后的“Mac Installer Distribution”證書


  • 創(chuàng)建“Developer ID Installer”證書——開發(fā)者ID安裝包證書
選擇“Developer ID Installer”項
使用“CertificateSigningRequest.certSigningRequest”證書

證書創(chuàng)建好:可點擊“Download”下載碍彭!

創(chuàng)建好“Developer ID Installer”證書

下載后的“Developer ID Installer”證書:

下載后的“Developer ID Installer”證書


  • 創(chuàng)建“Developer ID Application”證書——開發(fā)者ID應用證書
選擇“Developer ID Application”項
使用“CertificateSigningRequest.certSigningRequest”證書

證書創(chuàng)建好:可點擊“Download”下載!

創(chuàng)建好“Developer ID Application”證書

下載后的“Developer ID Application”證書:

下載后的“Developer ID Application”證書

至此,完成所有證書的創(chuàng)建和下載庇忌!

開發(fā)者賬號上所有證書:

所有證書


證書導入到“鑰匙串”中:(步驟如下)

雙擊要添加的證書:

要添加的證書
彈出的提示

點擊"添加"舞箍,完成證書導入


重復上面步驟皆疹,將所有的證書導入到“鑰匙串”中疏橄,如下:

鑰匙串中的證書


Tips導出證書的p12文件!(給其他電腦可進行開發(fā)工作)
步驟如下~

選擇要處理的證書并展開鑰匙略就,鼠標右鍵選擇“導出”項

為p12文件命名設置存儲路徑捎迫,再點擊"存儲"配名!

為p12文件命名和設置存儲路徑

需要為p12文件設置保護密碼

為p12文件設置保護密碼


導出后的p12文件:

“Developer ID Application”證書\“Developer ID Installer”證書 (P12文件)
“Mac App Distribution”證書\“Mac Installer Distribution”證書 (P12文件)
“Mac Development”證書 (P12文件)


整理后所有P12文件

所有的P12文件



開始添加測試設備Mac(針對(開發(fā)證書)開發(fā)版本的):需在開發(fā)者賬號填入測試設備Mac的UUID

獲取Mac電腦的UUID:
點擊屏幕上方菜單欄的?橄教,選擇“關于本機”后再點擊“系統(tǒng)報告”

“關于本機”頁面

在“系統(tǒng)報告”頁面查看系統(tǒng)信息-獲取Mac電腦的UUID

獲取到Mac電腦的UUID

再在開發(fā)者賬號上添加Mac電腦的UUID——用作測試機:

在開發(fā)者賬號上添加Mac電腦的UUID

添加好Mac電腦的UUID师坎,點擊“Register”注冊

添加好Mac電腦的UUID攀圈,點擊“Register”注冊
添加Mac電腦的UUID并注冊完成

完成測試設備Mac電腦(UUID)的添加!



再繼續(xù)創(chuàng)建描述文件:

  • 創(chuàng)建“macOS App Development”描述文件
選擇“macOS App Development”項

選擇對應的App ID叹谁,再點擊“Continue”

選擇對應的App ID矢腻,再點擊“Continue”

Tips:勾選"Mac Catalyst"項時~

(勾選"Mac Catalyst"支持iPad)

選擇對應的Mac Development證書

選擇對應的Mac Development證書

選擇測試設備(Mac電腦的UUID)

選擇測試設備(Mac電腦的UUID)

給描述文件命名瓶殃,并點擊“Generate”進行創(chuàng)建

給描述文件命名敲茄,并點擊“Generate”
創(chuàng)建好“macOS App Development”描述文件

下載后的“macOS App Development”描述文件:

下載后的“macOS App Development”描述文件

點擊該文件彈出安裝提示:

點擊該文件彈出安裝提示

再輸入電腦賬戶密碼進行安裝:

輸入電腦賬戶密碼進行安裝
  • 創(chuàng)建“Mac App Store”描述文件
選擇“Mac App Store”項

選擇對應的App ID位谋,再點擊“Continue”

選擇對應的App ID,點擊“Continue”

選擇對應的Mac App Distribution證書

選擇對應的Mac App Distribution證書

給描述文件命名堰燎,并點擊“Generate”進行創(chuàng)建

給描述文件命名倔幼,并點擊“Generate”
創(chuàng)建好“Mac App Store”描述文件

下載后的“Mac App Store”描述文件:

下載后的“Mac App Store”描述文件

點擊該文件彈出安裝提示:

點擊該文件彈出安裝提示

再輸入電腦賬戶密碼進行安裝:

輸入電腦賬戶密碼進行安裝

會彈出“安裝描述文件失敗”提示:

“安裝描述文件失敗”提示
  • 創(chuàng)建“Developer ID”描述文件
選擇“Developer ID”項

選擇對應的App ID,再點擊“Continue”

選擇對應的App ID爽待,再點擊“Continue”

選擇對應的Developer ID Application證書

選擇對應的Developer ID Application證書

給描述文件命名,并點擊“Generate”進行創(chuàng)建

給描述文件命名翩腐,并點擊“Generate”進行創(chuàng)建
創(chuàng)建好“Developer ID”描述文件

下載后的“Developer ID”描述文件:

下載后的“Developer ID”描述文件

點擊該文件彈出安裝提示:

點擊該文件彈出安裝提示

再輸入電腦賬戶密碼進行安裝:

輸入電腦賬戶密碼進行安裝

成功安裝上該描述文件:提示'已驗證'

該描述文件 安裝成功

開發(fā)者賬號上所有描述文件:

所有描述文件



完成了App ID鸟款、證書、描述文件的創(chuàng)建茂卦,以及測試設備的添加何什!
就可以配置工程了!

添加 App ID(Bundle Identifie)到工程的TARGET中:

添加App ID(Bundle Identifier)


選擇并配置開發(fā)等龙、發(fā)布描述文件

開發(fā)处渣、發(fā)布的描述文件
配置好 開發(fā)、發(fā)布的描述文件

現(xiàn)在就可以進行代碼開發(fā)工作和版本打包了蛛砰!




打包后導出及上架

先看一下下面已經打包好IPA包

已經打包好的IPA包

要對IPA包處理有如下4種

  • App Store Connect
  • Developer ID
  • Development
  • Copy App

  • App Store Connect
選擇"App Store Connect"項


  • 選擇"Upload"罐栈,上傳包至‘App Store Connect’~
選擇"Upload"
點擊"Next"

選擇相應的描述文件——Mac_ProjectName_App_Store

選擇相應的描述文件——Mac_ProjectName_App_Store

再點擊"Upload"進行上傳~

ProjectName.pkg包的信息展示
ProjectName.pkg包 上傳中

ProjectName.pkg上傳‘App Store Connect’成功后:

上傳‘App Store Connect’成功

在IPA包列表中,該ProjectName.pkg包上傳成功后的狀態(tài)——Uploaded

該ProjectName.pkg包上傳成功后的狀態(tài)——Uploaded

就可以去開發(fā)者賬號進行上架工作了~



  • 選擇"Export"泥畅,導出為ProjectName.pkg包
選擇"Export"
點擊"Next"

選擇相應的描述文件——Mac_ProjectName_App_Store

選擇相應的描述文件——Mac_ProjectName_App_Store

再點擊"Export"進行導出~

ProjectName.pkg包的信息展示

導出后的ProjectName.pkg包

導出的pkg包

ProjectName.pkg使用:

  • 1.雙擊ProjectName.pkg荠诬,可進行安裝

    安裝ProjectName.pkg
  • 2.通過"Transporter"軟件,上傳至‘App Store Connect’(進行上架工作)

    Transporter


  • Developer ID
選擇"Developer ID"項


  • 選擇"Upload",上傳包以供蘋果進行公證柑贞!
選擇"Upload"

選擇相應的描述文件——Mac_ProjectName_Develop_ID

選擇相應的描述文件——Mac_ProjectName_Develop_ID

再點擊"Upload"進行上傳~

ProjectName.zip包的信息展示
ProjectName.zip包 上傳中

ProjectName.zip包上傳成功后:提示等待公證的通知

提示等待公證的通知

收到公證的通知:

公證的通知

公證已經通過方椎!可以兼容macOS Catalina以上macOS系統(tǒng)



  • 選擇"Export"钧嘶,直接導出為App~ (Developer ID包)
選擇"Export"

選擇相應的描述文件——Mac_ProjectName_Develop_ID

選擇相應的描述文件——Mac_ProjectName_Develop_ID

再點擊"Export"進行導出~

App包的信息展示
  • 1.已經成功公證棠众,導出的App包

    提示已經成功公證
    填寫項目的名稱

    公證后導出的Developer ID包:

    公證后導出的Developer ID包


  • 2.未成功公證,導出的App包
    未成功公證有决,導出的Developer ID包:

    未成功公證闸拿,導出的App包Developer ID包



關于 公證 \ macOS Catalina版本的支持

所以為了兼容更高版本的系統(tǒng)按咒,最好將Developer ID包進行公證迟隅,再導出使用!


  • Development
選擇"Development"項

選擇相應的描述文件——Mac_ProjectName_Development

選擇相應的描述文件——Mac_ProjectName_Development

再點擊"Export"導出App包~

App包的信息展示

導出的Development包:

導出的Development包


  • Copy App
選擇"Copy App"項

直接就可以選擇存儲路徑文件夾命名

選擇存儲路徑励七,文件夾命名

導出后的App包:

導出后的App包


常用包的形式:
"App Store Connect"(上架/pkg安裝包) >> "Developer ID"(直接使用App) >>> "Development"(針對Mac測試機) >>>>> "Copy App"


應用包處理使用——參考
我們公司采用了如下兩個方案:






goyohol's essay



熟悉證書相關配置和打包的流程掠抬、書寫本文吼野!花了很多時間,也在網上參考很多了資料~




相關資料和總結:(不想詳細整理了两波,不過可參考性依次下降哈~)


Mac開發(fā)參考:

macOS開發(fā) — Xamarin.Mac


證書和標識符:https://docs.microsoft.com/zh-cn/xamarin/mac/deploy-test/publishing-to-the-app-store/certificates-identifiers
應用的預配配置文件:https://docs.microsoft.com/zh-cn/xamarin/mac/deploy-test/publishing-to-the-app-store/profiles
Mac App Store 捆綁:https://docs.microsoft.com/zh-cn/xamarin/mac/deploy-test/publishing-to-the-app-store/bundling

Mac App 發(fā)布的最后 1kmhttps://sspai.com/post/40269


Mac OS平臺下應用程序安裝包制作工具Packages的使用介紹


Code Signing Services
https://developer.apple.com/documentation/security/code_signing_services?language=objc


Developer ID

Distribute outside the Mac App Store (macOS):https://help.apple.com/xcode/mac/current/#/dev033e997ca
Developer ID:https://developer.apple.com/support/developer-id/

使用“Developer ID”打包


Unable to revoke Mac Certificates
https://stackoverflow.com/questions/25005194/unable-to-revoke-mac-certificates

macOS 開發(fā) -刪除 Developer ID ApplicationDeveloper ID Installer 證書
https://blog.csdn.net/lovechris00/article/details/82765479
https://www.itread01.com/content/1541032563.html


"App Store Connect"包 - 只能上傳APP Store瞳步! 不能本地使用(可安裝),使用報錯“Code Signature Invalid”腰奋!

"Developer ID"包 - 直接安裝单起!不支持“Network Extensions”/“Push Notifications”等功能

"Development"包 - 只能安裝在填寫了UUID的電腦使用!



??
打的“MAC App Store”包劣坊,上傳APP Store報錯:

macOS 開發(fā) - Provisioning profile "xxx" doesn't support the Network Extensions capability.:https://blog.csdn.net/lovechris00/article/details/84028722

要么使用“Network Extensions”嘀倒,必須使用‘App Store’類型的證書及描述文件;
使用‘Developer ID’類型的證書及描述文件局冰,僅打包可關閉“Network Extensions”的使用测蘑!


打的“MAC App Store”包,直接上傳到App Store康二,能安裝但是本地是不能使用的碳胳!
MAC APP 意外退出 EXC_CRASH (Code Signature Invalid):>http://www.cocoachina.com/bbs/read.php?tid=307799

EXC_CRASH (Code Signature Invalid)

參考 https://mihail.stoynov.com/2013/04/22/force-boot-camp-into-using-an-iso-image-of-windows-to-create-the-usb-flash-drive-for-mountain-lion-with-updated-boot-camp/
參考 Parental Controls after OS X 10.8.2: EXC_CRASH and changes to https handling:http://tech.kateva.org/2013/05/parental-controls-after-os-x-1082.html
參考 OS X 10.9 Instant Crash [Fixed in update]:https://telltale.com/community/discussion/comment/869053/

無用 Mac OS X app crash with Code Signature Invalid error
無用 OSX Code Signature Invalid Exception when launched from Service on

參考,未嘗試 Code Signature Invalid:https://blog.csdn.net/yuanya/article/details/51057709


ERROR ITMS-90242: "The product archive is invalid. The Info.plist must contain a LSApplicationCategoryType key, whose value is the UTI for a valid category. For more details, see "Submitting your Mac apps to the App Store"."

plist文件:

<key>LSApplicationCategoryType</key>
  <string>public.app-category.video</string>


ERROR ITMS-90277: "Invalid Bundle Identifier. The application bundle contains a tool or framework $(PRODUCT_NAME) [com.CompanyName.ProjectName.pkg/Payload/ProjectName.app/Contents] using the bundle identifier '$(PRODUCT_BUNDLE_IDENTIFIER)', which is not a valid bundle identifier."


'$(PRODUCT_BUNDLE_IDENTIFIER)'
https://stackoverflow.com/questions/41944407/xcode-itunes-submit-error-itms-90277?noredirect=1
https://stackoverflow.com/questions/30110757/xcode-error-when-uploading-to-app-store-no-suitable-application-records-were-f


ERROR ITMS-90261: "Bad CFBundleExecutable. Cannot find executable file that matches the value of CFBundleExecutable in the nested bundle $(PRODUCT_NAME) [com.CompanyName.ProjectName.pkg/Payload/ProjectName.app/Contents] property list file."


ERROR ITMS-90280: "The CFBundleExecutable of two bundles may not point to the same file. The following shared bundle path have been found: ProjectName.app/Contents."


工程里生成的app文件 對應路徑:
/Users/用戶名/Library/Developer/Xcode/DerivedData/工程名-dumfvwoomgbbhjffzxipgzhhjvbw/Build/Products/Debug






關于iOS端賬號操作
個人賬號 真機測試 》赠摇、《 開發(fā)者賬號 真機測試
App上架











goyohol's essay

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末固逗,一起剝皮案震驚了整個濱河市浅蚪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烫罩,老刑警劉巖惜傲,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贝攒,居然都是意外死亡盗誊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門隘弊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哈踱,“玉大人,你說我怎么就攤上這事梨熙】停” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵咽扇,是天一觀的道長邪财。 經常有香客問我,道長质欲,這世上最難降的妖魔是什么树埠? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮嘶伟,結果婚禮上怎憋,老公的妹妹穿的比我還像新娘。我一直安慰自己九昧,他們只是感情好绊袋,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铸鹰,像睡著了一般愤炸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掉奄,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音凤薛,去河邊找鬼姓建。 笑死,一個胖子當著我的面吹牛缤苫,可吹牛的內容都是我干的速兔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼活玲,長吁一口氣:“原來是場噩夢啊……” “哼涣狗!你這毒婦竟也來了谍婉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤镀钓,失蹤者是張志新(化名)和其女友劉穎穗熬,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體丁溅,經...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡唤蔗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了窟赏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妓柜。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涯穷,靈堂內的尸體忽然破棺而出棍掐,到底是詐尸還是另有隱情,我是刑警寧澤拷况,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布作煌,位于F島的核電站,受9級特大地震影響蝠嘉,放射性物質發(fā)生泄漏最疆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一蚤告、第九天 我趴在偏房一處隱蔽的房頂上張望努酸。 院中可真熱鬧,春花似錦杜恰、人聲如沸获诈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舔涎。三九已至,卻和暖如春逗爹,著一層夾襖步出監(jiān)牢的瞬間亡嫌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工掘而, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挟冠,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓袍睡,卻偏偏與公主長得像知染,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子斑胜,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內容