随着Apple为Mac App Store外部分发的应用程序引入了新的公证流程,当我尝试将我的应用程序提交以进行公证时出现了此错误,该应用程序通过CocoaPods安装了Sparkle框架。
我的应用程序(帮助程序应用程序和其他框架)中包含的所有捆绑包首先遇到了错误,但是在我通过项目编辑器启用了Hardened Runtime并显示了以下异常之后,除了上述提到的两个Sparkle捆绑包,它们都消失了。 / p>
我对这种新公证的指导方针知之甚少,因为它刚刚出炉,而且我已经看到WWDC 2018 presentation,并且找不到任何其他文档。
有什么想法如何为Sparkle的Autoupdate.app和fileop启用强化的运行时?还是因为启用自动更新程序需要访问其他应用程序,才使Sparkle像启用沙箱一样不可能?
答案 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的强化运行时选项。
但是您仍然可以使用它,而无需重建它。只需向您的构建阶段添加一个运行脚本,如下所示:
以下是脚本(来自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