Apple Watchkit模拟器问题:SPErrorInvalidBundleNoGizmoBinaryMessage

当我打开我现有的Watchkit应用程序(Xcode 6.2),它编译正确,模拟器启动(iPhone + Watch),然后是有意义的错误:

启动'xxx Watchkit扩展'错误SPErrorInValidBundleNoGizmoBinaryMessage

我有这个问题与所有模拟器(iPhone 5 / 5S / 6/6 + – 38毫米/ 42毫米)

任何想法是什么问题可以?

这似乎是由于某种原因,应用程序不希望在模拟器上运行,即使它曾经。 与其他Watchkit示例应用程序一样,包含在同一项目中的iPhone应用程序也运行。

你有没有更改你的应用程序的包ID? 如果是这样,您可能需要手动更新WatchKit扩展中的WKAppBundleIdentifier以及WatchKit应用程序中的WKCompanionAppBundleIdentifier。

WKAppBundleIdentifier可能需要与WatchKit App的Bundle Identifier相同。

请查看WatchKit Extension的info.plist。 NSExtension – NSExtensionAttributes – WKAppBundleIdentifier – xxxxx.watchkitapp

编辑:进一步的解释澄清…

在您的App目标下,进入INFO选项卡并将Bundle Identifier设置为com.myapp

然后在WatchKit扩展目标下,进入INFO选项卡,将Bundle Identifier设置为com.myapp.watchkitextension

然后仍在WatchKit扩展目标下,仍然在INFO选项卡下,将NSExtension> NSExtensionAttributes> WKAppBundleIdentifier设置为com.myapp.watchkitapp

所以一个以.watchkitextension结尾,另一个以.watchkitapp结尾

检查Info.plist中的“您的应用程序WatchKit扩展”和“您的应用程序WatchKit应用程序”。 所有标识的第一部分应该是相同的。

在我的情况下,问题是在“您的应用程序WatchKit扩展”> NSExtension> NSExtensionAttributes> WKAppBundleIdentifier。

我的问题是在这个字符串

确保你正在使用8.3模拟器。

使用8.2时,我一直得到这个信息。 试了一下这里列出的所有东西,并为此奋斗了好几个小时。 切换到8.3解决了它。 具有讽刺意味的是,你必须将部署目标设置为8.2,但watchkit应用程序需要运行8.3我猜…

我多次检查所有包标识符,但无法摆脱这个问题。 清理生成文件夹也没有工作。

不过,我可以通过closures WatchKit Extensionfunction 来closures游戏中心

打开iOS主机应用程序似乎工作正常,但打开WatchKit扩展的结果在尝试在模拟器中运行WatchKit应用程序时, SPErrorInvalidBundleNoGizmoBinaryMessage错误,而它完成build设没有任何抱怨。

我正在为Apple Watch开发一款游戏,期待着支持Game Center。 实际上,我的计划从一开始就与托pipe的iOS应用程序进行通信,但之后我看到了Game Center的function中列出了Game Center,所以我希望能够在那里处理它。 然而,因为它似乎没有工作,我会坚持我原来的计划,通过托pipe的iOS应用程序来支持它。

Xcode版本6.2(6C131e)

编辑:与Xcode版本6.3(6D570)相同的问题

对于真正的设备(而不是模拟器)上的问题,请尽量在这篇文章中: http : //blog.jaredsinclair.com/post/117350678170/jareds-code-signing-tips-apple-watch-edition

最重要的是:

所有三个目标需要以下内容:

针对该目标的唯一应用程序ID以代码签名身份(适用于所有目标)为该目标提供唯一的供应configuration文件。

并确保应用程序ID是一致的:

您的应用ID将如下所示:

com.company.App名

com.company.App-Name.todaywidget

com.company.App-Name.watchkitapp

com.company.App-Name.watchkitextension

如果仍然无效,请手动从手表中删除应用程序(按住图标,然后按“x”),然后重试。 这是为我做的踢球。

我解决问题的程序是

  1. 检查WatchKit扩展和WatchKit应用程序中的WKAppBundleIdentifier和包标识符是否正确
  2. 删除〜/ Library / Developer / CoreSimulator / Devices的子文件夹
  3. 删除〜/ Library / Developer / Xcode / DerivedData的子文件夹
  4. 清理我的项目
  5. 重新启动模拟器

我也一直在努力。 这是什么解决了我的问题在Xcode 7.1 iOS 9.只要确保您按照下面的命名为您的标识符:

  • 目标 – com.myCompany.myApp
  • Watchkit应用程序 – com.myCompany.myApp.watchkitApp
  • Watchkit扩展 – com.myCompany.myApp.watchkitApp.watchkitextension

该扩展应具有WatchKit应用程序目标+ .watchkitextension

我已经尝试一切张贴到目前为止在这个线程,但仍然无法得到它的工作。 我采取了回到原点,当它正在工作,并追溯每一个行动,我已经弄清楚在哪一点上它打破了… …

事实certificate,WatchKit应用程序的info.plist文件不喜欢任何自定义plist条目,至less这是我发现在我的情况。 我添加了一个名为“MyAppBundlePrefix”的条目,并导致“Error Launching'xxx Watchkit Extension'SPErrorInValidBundleNoGizmoBinaryMessage”

我希望XCode能为这个错误提供一些更具体的细节,但是花了我大约5个小时的时间才发现这个错误。