我正在尝试将我们现有的应用程序上载到苹果公司进行公证。
根据文件https://help.apple.com/xcode/mac/current/#/dev88332a81e
我必须打开该应用程序的xcode存档管理器。
我们有一个从jenkins构建服务器生成的dmg文件。
如何在xcode中打开dmg文件进行上传?
此外,是否有一些我可以用于公证的命令行工具?
最佳答案
您可以从命令行执行此操作。
首先,您需要从.dmg中提取.app并辞职,并在此过程中删除com.apple.security.get-task-allow
权利(此版本会由构建自动添加以支持调试,通常会通过存档删除-公证服务不会但是,请接受具有该权利的软件包,因此必须将其删除)。
您使用的.entitlements文件只能是一个空文件。
Xcode 10.2和更高版本允许您设置构建设置“代码签名注入基本权利”,这将防止首先添加com.apple.security.get-task-allow
权利。您可以在例如发布版本不需要进行调试,因此跳过了使用空的授权文件重新打包和辞职的整个过程。
还要注意使用--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
然后验证:
xcrun stapler validate MyApp.dmg
验证操作成功!
您还可以将隔离标志应用于.app并尝试启动它,您将看到新的Gatekeeper对话框:
xattr -w com.apple.quarantine MyApp.app
关于xcode - 如何在Xcode中上传dmg文件以进行公证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53112078/