首先需要為Mac App創(chuàng)建App ID:
填寫信息如下—Description為"ProjectNameForMac"飘弧、Bundle ID為"com.CompanyName.ProjectName"!
創(chuàng)建成功后:該App ID的名稱為“ProjectNameForMac”搭盾、Identifier為“com.CompanyName.ProjectName”(App的Bundle 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ā)證書
證書創(chuàng)建好:可點擊“Download”下載饼灿!
下載后的“Mac Development”證書:
- 創(chuàng)建“Mac App Distribution”證書——App發(fā)布證書
證書創(chuàng)建好:可點擊“Download”下載!
下載后的“Mac App Distribution”證書:
- 創(chuàng)建“Mac Installer Distribution”證書——安裝包發(fā)布證書
證書創(chuàng)建好:可點擊“Download”下載帝美!
下載后的“Mac Installer Distribution”證書:
- 創(chuàng)建“Developer ID Installer”證書——開發(fā)者ID安裝包證書
證書創(chuàng)建好:可點擊“Download”下載碍彭!
下載后的“Developer ID Installer”證書:
- 創(chuàng)建“Developer ID Application”證書——開發(fā)者ID應用證書
證書創(chuàng)建好:可點擊“Download”下載!
下載后的“Developer ID Application”證書:
至此,完成所有證書的創(chuàng)建和下載庇忌!
開發(fā)者賬號上所有證書:
將證書都導入到“鑰匙串”中:(步驟如下)
雙擊要添加的證書:
點擊"添加"舞箍,完成證書的導入!
重復上面步驟皆疹,將所有的證書都導入到“鑰匙串”中疏橄,如下:
Tips:導出證書的p12文件!(給其他電腦可進行開發(fā)工作)
步驟如下~選擇要處理的證書并展開其鑰匙略就,鼠標右鍵選擇“導出”項:
為p12文件命名和設置存儲路徑捎迫,再點擊"存儲"配名!
需要為p12文件設置保護密碼:
開始添加測試設備Mac(針對(開發(fā)證書)開發(fā)版本的):需在開發(fā)者賬號填入測試設備Mac的UUID
獲取Mac電腦的UUID:
點擊屏幕上方菜單欄的?橄教,選擇“關于本機”后再點擊“系統(tǒng)報告”在“系統(tǒng)報告”頁面查看系統(tǒng)信息-獲取Mac電腦的UUID
再在開發(fā)者賬號上添加Mac電腦的UUID——用作測試機:
添加好Mac電腦的UUID师坎,點擊“Register”注冊
完成測試設備Mac電腦(UUID)的添加!
再繼續(xù)創(chuàng)建描述文件:
- 創(chuàng)建“macOS App Development”描述文件
選擇對應的App ID叹谁,再點擊“Continue”
Tips:勾選"Mac Catalyst"項時~
選擇對應的Mac Development證書
選擇測試設備(Mac電腦的UUID)
給描述文件命名瓶殃,并點擊“Generate”進行創(chuàng)建
下載后的“macOS App Development”描述文件:
點擊該文件彈出安裝提示:
再輸入電腦賬戶密碼進行安裝:
- 創(chuàng)建“Mac App Store”描述文件
選擇對應的App ID位谋,再點擊“Continue”
選擇對應的Mac App Distribution證書
給描述文件命名堰燎,并點擊“Generate”進行創(chuàng)建
下載后的“Mac App Store”描述文件:
點擊該文件彈出安裝提示:
再輸入電腦賬戶密碼進行安裝:
會彈出“安裝描述文件失敗”提示:
- 創(chuàng)建“Developer ID”描述文件
選擇對應的App ID,再點擊“Continue”
選擇對應的Developer ID Application證書
給描述文件命名,并點擊“Generate”進行創(chuàng)建
下載后的“Developer ID”描述文件:
點擊該文件彈出安裝提示:
再輸入電腦賬戶密碼進行安裝:
成功安裝上該描述文件:提示'已驗證'
開發(fā)者賬號上所有描述文件:
完成了App ID鸟款、證書、描述文件的創(chuàng)建茂卦,以及測試設備的添加何什!
就可以配置工程了!
添加 App ID(Bundle Identifie)到工程的TARGET中:
現(xiàn)在就可以進行代碼開發(fā)工作和版本打包了蛛砰!
打包后導出及上架
先看一下下面已經打包好的IPA包:
要對IPA包的處理有如下4種:
App Store Connect
Developer ID
Development
Copy App
App Store Connect
- 選擇"Upload"罐栈,上傳包至‘App Store Connect’~
選擇相應的描述文件——Mac_ProjectName_App_Store
再點擊"Upload"進行上傳~
ProjectName.pkg上傳‘App Store Connect’成功后:
在IPA包列表中,該ProjectName.pkg包上傳成功后的狀態(tài)——Uploaded
就可以去開發(fā)者賬號進行上架工作了~
- 選擇"Export"泥畅,導出為ProjectName.pkg包
選擇相應的描述文件——Mac_ProjectName_App_Store
再點擊"Export"進行導出~
導出后的ProjectName.pkg包
ProjectName.pkg使用:
1.雙擊ProjectName.pkg荠诬,可進行安裝
2.通過"Transporter"軟件,上傳至‘App Store Connect’(進行上架工作)
Developer ID
- 選擇"Upload",上傳包以供蘋果進行公證柑贞!
選擇相應的描述文件——Mac_ProjectName_Develop_ID
再點擊"Upload"進行上傳~
ProjectName.zip包上傳成功后:提示等待公證的通知
收到公證的通知:
公證已經通過方椎!可以兼容macOS Catalina以上的macOS系統(tǒng)!
- 選擇"Export"钧嘶,直接導出為App~ (Developer ID包)
選擇相應的描述文件——Mac_ProjectName_Develop_ID
再點擊"Export"進行導出~
1.已經成功公證過后棠众,導出的App包
公證后導出的Developer ID包:
2.未成功公證,導出的App包
未成功公證有决,導出的Developer ID包:關于 公證 \ macOS Catalina版本的支持
《有關公證前提條件的更新》
于2019年6月,蘋果宣布在Mac App Store以外通過其他途徑分發(fā)的所有 Mac 軟件必須獲得Apple的公證后才能默認在macOS Catalina上運行疮薇。《對您的 Mac 軟件進行公證以在 macOS Catalina 中運行》
要進行 Mac 軟件的公證胸墙,需要滿足的條件!所以為了兼容更高版本的系統(tǒng)按咒,最好將Developer ID包進行公證迟隅,再導出使用!
Development
選擇相應的描述文件——Mac_ProjectName_Development
再點擊"Export"導出App包~
導出的Development包:
Copy App
直接就可以選擇存儲路徑和文件夾命名:
導出后的App包:
常用包的形式:
"App Store Connect"(上架/pkg安裝包) >> "Developer ID"(直接使用的App) >>> "Development"(針對Mac測試機) >>>>> "Copy App"
- A.使用(公證過后的Developer ID包)'dmg'形式進行封裝智袭!
參考:《創(chuàng)建dmg文件—對Developer ID包封裝》 - B.上傳至App Store Connect后發(fā)布到App Store!
熟悉證書相關配置和打包的流程掠抬、書寫本文吼野!花了很多時間,也在網上參考很多了資料~
相關資料和總結:(不想詳細整理了两波,不過可參考性是依次下降哈~)
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ā)布的最后 1km:https://sspai.com/post/40269
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 Application
和Developer 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上架》