4

阅读有关公证的苹果文档,不清楚我们是否需要对二进制文件(例如启动守护程序)、框架或 dylib 进行公证。

我们还需要公证这些吗?

苹果文档可以在这里找到Notarizing Your App Before Distribution

4

1 回答 1

8

在这里回答我自己的问题,也许它可以帮助某人。

这可以由 Xcode 自动完成;但是,如果您需要手动配置它(也许您有持续集成,或者 w/e),这可能会有所帮助。

据苹果称:

公证让用户更加确信您分发的开发者 ID 签名软件已由 Apple 检查是否存在恶意组件。

如果没有问题,公证服务会生成一张票,供您装订到您的软件

在未来的 macOS 版本中,二进制文件、框架、dylib、应用程序将需要公证。

为了做到这一点,一些步骤是必要的:

  • --timestamp生成设置中为每个生成二进制、框架、dylib 或应用程序的目标添加其他代码签名标志
  • 在构建设置中添加--options=runtime其他代码签名标志(对于 Xcode < 10.2)或启用强化运行时(对于 Xcode >= 10.2)
  • 对所有内容进行代码签名(dylib、框架、二进制文件和 .apps。)

接下来,可以按如下方式进行公证:

  • 将需要公证的每个文件都包含在.zip文件中(其他支持的格式:.dmg.pkg
  • 将支持的格式上传到苹果公证服务:例如:xcrun altool --notarize-app -f <path_to_zip_dmg_or_pkg> --primary-bundle-id <bundle_identifier> -u <apple_id> -p @keychain:"Application Loader: <apple_id>"---> 这将返回一个UUID ,该 UUID也将<apple_id>在公证完成后发送到提供的邮件地址
  • 检查状态和错误日志(如果有)xcrun altool --notarization-info <UUID_from_previous_step> -u <apple_id> -p @keychain:"Application Loader: <apple_id>"
  • 可以使用 下载错误日志curl LogFileURL,其中LogFileURL在上一个命令的json 响应中返回
  • 如果一切正常,只需使用命令装订公证xcrun stapler staple -v <path_to_app_dmg_or_pkg>;只有appdmgpkg可以装订。

其他有用的命令:

  • 用于codesign -dvvv <path_to_file>检查代码签名是否完成,同时检查时间戳值
  • 用于spctl -a -v <path_to_file>检查装订是否有效
于 2019-05-03T09:19:25.153 回答