MacOS开发 技术集锦大前端开发苹果开发者

macOS开发 证书等配置/打包后导出及上架

2021-07-18  本文已影响0人  goyohol



首先需要为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”证书——开发证书
选择“Mac Development”项 使用“CertificateSigningRequest.certSigningRequest”证书

证书创建好:可点击“Download”下载!

创建好“Mac Development”证书

下载后的“Mac Development”证书:

下载后的“Mac Development”证书


  • 创建“Mac App Distribution”证书——App发布证书
选择“Mac App Distribution”项 使用“CertificateSigningRequest.certSigningRequest”证书

证书创建好:可点击“Download”下载!

创建好“Mac App Distribution”证书

下载后的“Mac App Distribution”证书:

下载后的“Mac App Distribution”证书


  • 创建“Mac Installer Distribution”证书——安装包发布证书
选择“Mac Installer Distribution”项 使用“CertificateSigningRequest.certSigningRequest”证书

证书创建好:可点击“Download”下载!

创建好“Mac Installer Distribution”证书

下载后的“Mac Installer Distribution”证书:

下载后的“Mac Installer Distribution”证书


  • 创建“Developer ID Installer”证书——开发者ID安装包证书
选择“Developer ID Installer”项 使用“CertificateSigningRequest.certSigningRequest”证书

证书创建好:可点击“Download”下载!

创建好“Developer ID Installer”证书

下载后的“Developer ID Installer”证书:

下载后的“Developer ID Installer”证书


  • 创建“Developer ID Application”证书——开发者ID应用证书
选择“Developer ID Application”项 使用“CertificateSigningRequest.certSigningRequest”证书

证书创建好:可点击“Download”下载!

创建好“Developer ID Application”证书

下载后的“Developer ID Application”证书:

下载后的“Developer ID Application”证书

至此,完成所有证书的创建和下载!

开发者账号上所有证书:

所有证书


证书导入到“钥匙串”中:(步骤如下)

双击要添加的证书:

要添加的证书 弹出的提示

点击"添加",完成证书导入


重复上面步骤,将所有的证书导入到“钥匙串”中,如下:

钥匙串中的证书


Tips导出证书的p12文件!(给其他电脑可进行开发工作)
步骤如下~

选择要处理的证书并展开钥匙,鼠标右键选择“导出”项

为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(针对(开发证书)开发版本的):需在开发者账号填入测试设备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",上传包至‘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包上传成功后的状态——Uploaded

该ProjectName.pkg包上传成功后的状态——Uploaded

就可以去开发者账号进行上架工作了~



  • 选择"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系统



  • 选择"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版本的支持

所以为了兼容更高版本的系统,最好将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开发参考:

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 发布的最后 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 开发 -删除 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 开发 - 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上架











goyohol's essay

上一篇下一篇

猜你喜欢

热点阅读