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

时间:2019-04-24 15:18:42

标签: macos code-signing macos-mojave notarize stapler

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

我们还需要公证吗?

可在此处找到苹果文档Notarizing Your App Before Distribution

1 个答案:

答案 0 :(得分:1)

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

这可以由Xcode自动完成;但是,如果您需要手动配置此功能(可能具有持续集成功能,则可能有帮助)。

根据苹果公司的报道:

  

公证使用户更有信心,您所分发的开发人员ID签名的软件已被Apple检查是否存在恶意组件。

     

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

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

为此,必须执行一些步骤:

  • 在每个生成二进制文件,框架,dylib或应用程序的目标的 Build Settings 中将--timestamp添加到 Other Code Signing Flags
  • --options=runtime添加到 Build中的 Other Code Signing Flags (其他代码签名标记)(对于Xcode <10.2)或启用强化的运行时(对于Xcode> = 10.2)设置
  • 对所有内容(dylib,框架,二进制文件和.apps)进行代码签名

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

  • 将每个需要公证的文件都包含在 .zip 文件中(其他受支持的格式: .dmg .pkg
  • 将支持的格式上传到Apple公证服务:例如: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 ,该URL也将在提供的{{1 }}公证完成后
  • <apple_id>检查状态和错误日志(如果有)
  • 可以使用xcrun altool --notarization-info <UUID_from_previous_step> -u <apple_id> -p @keychain:"Application Loader: <apple_id>"下载错误日志,其中上一条命令的 json响应中返回 LogFileURL
  • 如果一切正常,只需使用命令curl LogFileURL进行公证即可;只能装订 app dmg pkg

其他有用的命令:

  • 使用xcrun stapler staple -v <path_to_app_dmg_or_pkg>检查是否已完成代码签名,还检查时间戳记值
  • 使用codesign -dvvv <path_to_file>检查装订是否有效