Sparkle的Xcode 10公证问题,涉及Autoupdate.app和fileop的强化运行时

时间:2018-10-16 10:19:27

标签: xcode macos xcode10 macos-mojave sparkle

随着Apple为Mac App Store外部分发的应用程序引入了新的公证流程,当我尝试将我的应用程序提交以进行公证时出现了此错误,该应用程序通过CocoaPods安装了Sparkle框架。

Hardened Runtime Error

我的应用程序(帮助程序应用程序和其他框架)中包含的所有捆绑包首先遇到了错误,但是在我通过项目编辑器启用了Hardened Runtime并显示了以下异常之后,除了上述提到的两个Sparkle捆绑包,它们都消失了。 / p>

Enabled Hardened Runtime

我对这种新公证的指导方针知之甚少,因为它刚刚出炉,而且我已经看到WWDC 2018 presentation,并且找不到任何其他文档。

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

2 个答案:

答案 0 :(得分:1)

当前的Sparkle版本未在启用Hardened Runtime的情况下进行编译。现在唯一的选择是在启用了强化运行时的情况下,使用此处的https://github.com/sparkle-project/Sparkle源代码自行重建Sparkle组件。

此处更多信息https://github.com/sparkle-project/Sparkle/issues/1266

答案 1 :(得分:0)

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

但是您仍然可以使用它,而无需重建它。只需向您的构建阶段添加一个运行脚本,如下所示:

Build Phases

以下是脚本(来自GitHub discussion):

from dateutil.parser import parse
try:
    print(s)
    if(re.match('(\d{1,2})[/-](\d{1,2})[/-](\d{2})', s)):
        year = '19'+re.search('(\d{1,2})[/-](\d{1,2})[/-](\d{2})', s).group(3)
        date = re.search('(\d{1,2})[/-](\d{1,2})[/-](\d{2})', s).group(1)+'/'+re.search('(\d{1,2})[/-](\d{1,2})[/-](\d{2})', s).group(2)+'/'+year
        print(date)
        return pd.to_datetime(date)
    else:
        result = parse(s, fuzzy_with_tokens=True, default=datetime.datetime(2015, 1, 1))
        print("S: ",s)
        print("Result: ", result[0])
        return(result[0])
except Exception:
    pass