我们需要公证框架(.framework)、dylibs 和二进制文件吗?

ion*_*ion 2 macos code-signing stapler macos-mojave notarize

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

我们还需要公证这些吗?

可以在此处找到苹果文档在分发前公证您的应用程序

ion*_*ion 6

在这里回答我自己的问题,也许对某人有帮助。

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

据苹果称:

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

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

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

为此,需要执行一些步骤:

  • 添加--timestamp其他代码签名旗构建设置为产生一个二进制文件,框架,dylib或应用程序的每个目标
  • 构建设置中添加--options=runtime其他代码签名标志(对于 Xcode < 10.2)或启用强化运行时(对于 Xcode >= 10.2)
  • 代码签名一切(dylibs,框架,二进制文件和.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>检查装订是否有效