如何在Xcode中上传dmg文件以进行公证

时间:2018-11-02 02:53:35

标签: xcode macos code-signing codesign notarize

我正在尝试将我们现有的应用程序上载到Apple进行公证。

根据文档https://help.apple.com/xcode/mac/current/#/dev88332a81e 我必须打开该应用程序的xcode存档管理器。

我们有一个从jenkins构建服务器生成的dmg文件。 如何在xcode中打开dmg文件进行上传?

还有,我可以使用一些命令行工具进行公证吗?

1 个答案:

答案 0 :(得分:3)

您可以从命令行执行此操作。

首先,您需要从.dmg中提取.app并辞职,并在此过程中删除com.apple.security.get-task-allow权利(此版本会由构建自动添加以支持调试,通常会通过存档删除-公证服务将不接受具有该权利的软件包,因此您必须将其删除。)

您使用的.entitlements文件只能是一个空文件。

还请注意使用--options runtime,它指定您的应用是使用强化的运行时构建的。

codesign -f -s "Developer ID Application: Name (ID)" --entitlements my-entitlments.entitlements --options runtime MyApp.app

现在,您需要将.app重新打包回.dmg内,并辞职:

(我也使用--options runtime标志,尽管不确定是否有必要)

codesign -s "Developer ID Application: Name (ID)" MyApp.dmg --options runtime

然后使用altool提交您的.dmg:

(用户名和密码必须是开发人员门户中macOS团队的成员)

xcrun altool --notarize-app -f MyApp.dmg --primary-bundle-id my-app.myapp -u username -p password

如果上传成功,您将获得令牌:

RequestUUID = 28fad4c5-68b3-4dbf-a0d4-fbde8e6a078f

然后,您可以使用该令牌通过altool来检查状态:

xcrun altool --notarization-info 28fad4c5-68b3-4dbf-a0d4-fbde8e6a078f -u username -p password

最终,它将成功或失败。只是继续检查。检查响应的“状态”字段,该字段应为“成功”。响应还将包括一个日志文件,您可以使用该日志文件对错误进行故障排除。

假设成功,则需要将公证书钉入应用程序:

xcrun stapler staple MyApp.dmg

然后使用spctl进行验证:

spctl -a -v MyApp.app
  

MyApp.app:已接受

     

source =公证的开发人员ID

您还可以将隔离标志应用于您的.app并尝试启动它,您将看到新的Gatekeeper对话框:

xattr -w com.apple.quarantine MyApp.app