Xcode Sparkle 关于 Autoupdate.app 和 fileop 的强化运行时的 10 个公证问题

Xcode 10 notarization issue with Sparkle about Hardened Runtime for Autoupdate.app and fileop

由于 Apple 为在 Mac App Store 之外分发的应用引入了新的公证流程,因此当我尝试提交我的公证申请时出现此错误,该申请已通过 CocoaPods 安装了 Sparkle 框架。

我的应用程序(辅助应用程序和其他框架)中包含的所有捆绑包首次遇到错误,但是在我通过项目编辑器启用强化运行时后,除了这两个提到的 Sparkle 捆绑包之外,它们都消失了,异常情况如下所示.

我不太了解这个新公证的指导方针,因为它刚刚出来,我已经看到 WWDC 2018 presentation 但找不到任何其他文档。

关于如何为 Sparkle 的 Autoupdate.app 和 fileop 启用强化运行时有什么想法吗?还是 Sparkle 不可能启用沙箱,因为自动更新过程需要访问其他应用程序?

Sparkle 的当前版本 1.22.0rc1 启用了 "Hardened Runtime" 构建选项,但如果您只是将它包含在您的应用程序中,Apple 的服务仍然会拒绝它。编译时也没有用于 fileop 的强化运行时选项。

但无论如何你都可以使用它,不需要重建它。只需将 运行 脚本添加到您的构建阶段,如下所示:

这是脚本(来自GitHub discussion):

LOCATION="${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH}"

# By default, use the configured code signing identity for the project/target
IDENTITY="${CODE_SIGN_IDENTITY}"
if [ "$IDENTITY" == "" ]
then
# If a code signing identity is not specified, use ad hoc signing
IDENTITY="-"
fi
codesign --verbose --force --deep -o runtime --sign "$IDENTITY" "$LOCATION/Sparkle.framework/Versions/A/Resources/AutoUpdate.app"
codesign --verbose --force -o runtime --sign "$IDENTITY" "$LOCATION/Sparkle.framework/Versions/A"