如何公证包含嵌入其中的助手的应用程序包?

jva*_*ela 1 macos xcode software-distribution code-signing notarize

有谁知道如何发送包含嵌入式帮助应用程序包的 Mac 应用程序包以供 Apple 公证?当我尝试归档一个简单的应用程序时,一切都很顺利。该应用程序已正确存档,我可以上传存档文件,我的应用程序会在几分钟内得到公证。

但是,当我尝试使用脚本阶段归档包含辅助应用程序包的应用程序包并尝试通过创建存档的正常自动工作流程自动签署和公证我的应用程序包时,我无法上传应用程序包公证。所以我该怎么做?

任何帮助表示赞赏。

jva*_*ela 5

感谢苹果在 WWDC 2019 期间制作的新文档,我终于能够解决这个问题,这在以前是不可能的,即使在使用了 DTS 票之后也是如此。基本上,如果您有一个复杂的包并且需要使用脚本自动构建它,则不能通过存档使用自动工作流程,然后通过 Xcode 中的 Organizer 上传应用包

因此,对于现在和将来遇到此问题的人,以下是解决我的问题的方法:

1) 转到项目导航面板并单击您的项目

2)通过单击构建设置转到每个目标并进行以下修改(在搜索框中输入“签名”一词,因为这会缩小显示的构建设置的范围):

  • 转到Code Signing Identity并在Release版本中将Mac Developer(默认值)更改为您钥匙串上的Developer ID 应用程序
  • 转到Code Signing Inject Base Entitlements并在Release版本中将Yes(默认值)更改为No。如果您不这样做,您的应用程序包将被公证服务器拒绝,因为您允许将代码注入您的应用程序,这是调试所需的,但存在安全风险。
  • 转到Code Signing Style并在Release版本上将Automatic更改为Manual。如果您不这样做,正确的签名将失败。
  • 转到其他代码签名标志并在发布版本中添加--timestamp。这将标记 Xcode,表明您希望向您的应用程序添加安全时间戳。如果您不这样做,您的应用程序包将被公证服务器拒绝。

3) 要构建用于分发的应用程序,请执行以下操作:

  • 使用发布构建设置创建一个包含所有目标的新方案
  • 单击Build或 Command + B 作为快捷键,只要您遵循由内而外的规则(即,应首先对更深层目录中的代码进行签名!),您将正确签署所有包。

4) 要对您刚刚创建并正确签名的应用程序包进行公证,并使用有效的安全时间戳,您有多种选择:

  • 创建 .dmg 磁盘映像并按照此答案中的说明进行操作。但是,请跳过代码签名说明,因为我在这里解释的内容涵盖了那里解释的所有问题和注意事项。或者,您可以压缩并上传 zip 文件,如下所述:
  • 在终端中使用以下命令将您的应用程序包压缩为 zip 文件: /usr/bin/ditto -ck --keepParent "*APP_PATH*" "*ZIP_PATH*"

5)在终端中使用它上传磁盘映像或zip文件:xcrun altool --notarize-app --primary-bundle-id "your-primary-bundle-id-here" --username "*your-username*" --password "*your-app-specific-password-here*" --file *your-path-here*。您需要前往您的appleid.apple.com帐户为该应用生成一个特定应用的密码altool。这是一项安全措施,因此您不会以明文形式发送您的 Apple ID 密码。您可以在 Apple ID 管理帐户的“安全”面板中执行此操作。在您确认上传成功之前不要做任何事情

6)请公证史上的地位,在终端运行以下命令:xcrun altool --notarization-history 0 -u "*your-account*" -p "*your-app-specific-password-here*"。您应该会看到一个上传列表及其各自的日期和 RequestUUID。最新的上传通常是列表中的第一个。

7) 要请求公证状态,包括访问公证日志文件,请在终端中运行: xcrun altool --notarization-info RequestUUID -u "*your-account*"

8) 如果您获得应用程序包已获批准的状态,那么您可以通过在终端中运行该程序来装订该批准:xcrun stapler staple *path-to-your-app-bundle*