OS X 上的今天小部件无法正常工作

Today Widget on OS X not working

我似乎无法在小部件模拟器中获取我的“今日”小部件(或与此相关的任何扩展)运行。模拟器启动并显示 "Couldn't Open Widget" 和

Failed to find Widget /Users/SomeUser/Library/Developer/Xcode/DerivedData/Build/Products/Debug/MyApp.app/Contents/PlugIns/MyApp.appex

我查看了控制台应用,我也看到了这个:

pkd[299]:忽略 /Users/SomeUser/Library/Developer/Xcode/DerivedData/Build/Products/Debug/MyApp 处配置错误的插件。app/Contents/PlugIns/MyApp.appex:插件必须沙盒化

但它 在 xcode 中的沙箱!它是代码签名的、沙盒化的等等。即使我尝试将它部署在一台新机器上(使用我的开发人员配置文件注册为开发人员机器),这些小部件甚至不会出现在系统偏好设置中。

知道我需要做什么吗?

好了终于找到问题了。我正在手动对我的应用程序进行代码设计(这以前从来都不是问题),因为我有一组复杂的应用程序所依赖的框架,并且需要使用 Copy / Runscript post-build 脚本手动复制它们。无论如何,似乎至少从 Xcode 7 开始,这不再按预期工作。该应用程序运行正常,并且代码签名表明该应用程序已正确签名,但显然在幕后发生了一些破坏代码签名的事情。我最终删除了所有手动代码设计的东西,并简单地使用 Xcode 的 'Copy Framework' post 构建步骤并检查了 'Sign on Copy'。它现在终于按预期工作了。

我无法停止手动构建和代码签名,所以我查看了 Xcode 构建日志并发现了差异 :) 在我的例子中,我只是将 -fapplication-extension 添加到编译器和链接器标志,现在可以使用了!

根据 strangetimes 在这里的回答更详细的回答:

首先 select 您的项目,然后是您的 App Target(不是扩展)

然后点击 Build Phases,然后点击顶部导航 Editor, 这里 select 首先 添加构建阶段 ,最后单击 添加复制文件构建阶段

就是这样。使用 Widget Simulator 再次构建,它现在应该可以工作了。