macOS开发 证书等配置/打包后导出及上架
首先需要为Mac App创建App ID:
1.选择'App IDs'项 2.选择类型为'App'填写信息如下—Description为"ProjectNameForMac"、Bundle ID为"com.CompanyName.ProjectName"!
填写的信息创建成功后:该App ID的名称为“ProjectNameForMac”、Identifier为“com.CompanyName.ProjectName”(App的Bundle ID)
有了该App ID接下来为App创建证书:
Mac证书类型:
Mac Development——开发证书(证书名称:Mac Developer: TeamMemberName)
Sign development versions of your Mac app.
签署Mac应用程序的开发版本。Mac App Distribution——App发布证书(证书名称: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配置分发配置文件。Mac Installer Distribution——安装包发布证书(证书名称: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——开发者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之外可以分发。Developer ID Application——开发者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之外可以分发。
选择“Mac Development”项 使用“CertificateSigningRequest.certSigningRequest”证书
- 创建“Mac Development”证书——开发证书
证书创建好:可点击“Download”下载!
创建好“Mac Development”证书下载后的“Mac Development”证书:
下载后的“Mac Development”证书
选择“Mac App Distribution”项 使用“CertificateSigningRequest.certSigningRequest”证书
- 创建“Mac App Distribution”证书——App发布证书
证书创建好:可点击“Download”下载!
创建好“Mac App Distribution”证书下载后的“Mac App Distribution”证书:
下载后的“Mac App Distribution”证书
选择“Mac Installer Distribution”项 使用“CertificateSigningRequest.certSigningRequest”证书
- 创建“Mac Installer Distribution”证书——安装包发布证书
证书创建好:可点击“Download”下载!
创建好“Mac Installer Distribution”证书下载后的“Mac Installer Distribution”证书:
下载后的“Mac Installer Distribution”证书
选择“Developer ID Installer”项 使用“CertificateSigningRequest.certSigningRequest”证书
- 创建“Developer ID Installer”证书——开发者ID安装包证书
证书创建好:可点击“Download”下载!
创建好“Developer ID Installer”证书下载后的“Developer ID Installer”证书:
下载后的“Developer ID Installer”证书
选择“Developer ID Application”项 使用“CertificateSigningRequest.certSigningRequest”证书
- 创建“Developer ID Application”证书——开发者ID应用证书
证书创建好:可点击“Download”下载!
创建好“Developer ID Application”证书下载后的“Developer ID Application”证书:
下载后的“Developer ID Application”证书
至此,完成所有证书的创建和下载!
开发者账号上所有证书:
所有证书
将证书都导入到“钥匙串”中:(步骤如下)
钥匙串中的证书双击要添加的证书:
要添加的证书 弹出的提示点击"添加",完成证书的导入!
Tips:导出证书的p12文件!(给其他电脑可进行开发工作)
步骤如下~“Developer ID Application”证书\“Developer ID Installer”证书 (P12文件) “Mac App Distribution”证书\“Mac Installer Distribution”证书 (P12文件) “Mac Development”证书 (P12文件) 所有的P12文件选择要处理的证书并展开其钥匙,鼠标右键选择“导出”项:
为p12文件命名和设置存储路径,再点击"存储"!
为p12文件命名和设置存储路径需要为p12文件设置保护密码:
为p12文件设置保护密码
开始添加测试设备Mac(针对(开发证书)开发版本的):需在开发者账号填入测试设备Mac的UUID
获取Mac电脑的UUID:
“关于本机”页面
点击屏幕上方菜单栏的,选择“关于本机”后再点击“系统报告”在“系统报告”页面查看系统信息-获取Mac电脑的UUID
获取到Mac电脑的UUID
再在开发者账号上添加Mac电脑的UUID——用作测试机:
在开发者账号上添加Mac电脑的UUID添加好Mac电脑的UUID,点击“Register”注册
添加好Mac电脑的UUID,点击“Register”注册 添加Mac电脑的UUID并注册完成完成测试设备Mac电脑(UUID)的添加!
再继续创建描述文件:
选择“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”进行创建
给描述文件命名,并点击“Generate” 创建好“macOS App Development”描述文件下载后的“macOS App Development”描述文件:
下载后的“macOS App Development”描述文件点击该文件弹出安装提示:
点击该文件弹出安装提示再输入电脑账户密码进行安装:
输入电脑账户密码进行安装
选择“Mac App Store”项
- 创建“Mac App Store”描述文件
选择对应的App ID,再点击“Continue”
选择对应的App ID,点击“Continue”选择对应的Mac App Distribution证书
选择对应的Mac App Distribution证书给描述文件命名,并点击“Generate”进行创建
给描述文件命名,并点击“Generate” 创建好“Mac App Store”描述文件下载后的“Mac App Store”描述文件:
下载后的“Mac App Store”描述文件点击该文件弹出安装提示:
点击该文件弹出安装提示再输入电脑账户密码进行安装:
输入电脑账户密码进行安装会弹出“安装描述文件失败”提示:
“安装描述文件失败”提示
选择“Developer ID”项
- 创建“Developer ID”描述文件
选择对应的App ID,再点击“Continue”
选择对应的App ID,再点击“Continue”选择对应的Developer ID Application证书
选择对应的Developer ID Application证书给描述文件命名,并点击“Generate”进行创建
给描述文件命名,并点击“Generate”进行创建 创建好“Developer ID”描述文件下载后的“Developer ID”描述文件:
下载后的“Developer ID”描述文件点击该文件弹出安装提示:
点击该文件弹出安装提示再输入电脑账户密码进行安装:
输入电脑账户密码进行安装成功安装上该描述文件:提示'已验证'
该描述文件 安装成功
开发者账号上所有描述文件:
所有描述文件
完成了App ID、证书、描述文件的创建,以及测试设备的添加!
就可以配置工程了!
添加 App ID(Bundle Identifie)到工程的TARGET中:
添加App ID(Bundle Identifier) 开发、发布的描述文件 配置好 开发、发布的描述文件现在就可以进行代码开发工作和版本打包了!
打包后导出及上架
先看一下下面已经打包好的IPA包:
已经打包好的IPA包要对IPA包的处理有如下4种:
App Store Connect
Developer ID
Development
Copy App
选择"App Store Connect"项
App Store Connect
选择"Upload" 点击"Next"
- 选择"Upload",上传包至‘App Store Connect’~
选择相应的描述文件——Mac_ProjectName_App_Store
选择相应的描述文件——Mac_ProjectName_App_Store再点击"Upload"进行上传~
ProjectName.pkg包的信息展示 ProjectName.pkg包 上传中ProjectName.pkg上传‘App Store Connect’成功后:
上传‘App Store Connect’成功在IPA包列表中,该ProjectName.pkg包上传成功后的状态——Uploaded
该ProjectName.pkg包上传成功后的状态——Uploaded就可以去开发者账号进行上架工作了~
选择"Export" 点击"Next"
- 选择"Export",导出为ProjectName.pkg包
选择相应的描述文件——Mac_ProjectName_App_Store
选择相应的描述文件——Mac_ProjectName_App_Store再点击"Export"进行导出~
ProjectName.pkg包的信息展示导出后的ProjectName.pkg包
导出的pkg包ProjectName.pkg使用:
1.双击ProjectName.pkg,可进行安装
安装ProjectName.pkg2.通过"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系统!
选择"Export"
- 选择"Export",直接导出为App~ (Developer ID包)
选择相应的描述文件——Mac_ProjectName_Develop_ID
选择相应的描述文件——Mac_ProjectName_Develop_ID再点击"Export"进行导出~
App包的信息展示
1.已经成功公证过后,导出的App包
提示已经成功公证 填写项目的名称公证后导出的Developer ID包:
公证后导出的Developer ID包
2.未成功公证,导出的App包
未成功公证,导出的App包Developer ID包
未成功公证,导出的Developer ID包:关于 公证 \ macOS Catalina版本的支持
《有关公证前提条件的更新》
于2019年6月,苹果宣布在Mac App Store以外通过其他途径分发的所有 Mac 软件必须获得Apple的公证后才能默认在macOS Catalina上运行。《对您的 Mac 软件进行公证以在 macOS Catalina 中运行》
要进行 Mac 软件的公证,需要满足的条件!所以为了兼容更高版本的系统,最好将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"
- A.使用(公证过后的Developer ID包)'dmg'形式进行封装!
参考:《创建dmg文件—对Developer ID包封装》 - B.上传至App Store Connect后发布到App Store!
熟悉证书相关配置和打包的流程、书写本文!花了很多时间,也在网上参考很多了资料~
相关资料和总结:(不想详细整理了,不过可参考性是依次下降哈~)
Mac开发参考:
macOS开发 — 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 发布的最后 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 开发 -删除
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 开发 - 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端的账号上操作:
《个人账号 真机测试 》、《 开发者账号 真机测试》
《App上架》