Apple Watchkit模拟器问题:SPErrorInvalidBundleNoGizmoBinaryMessage

时间:2015-02-02 20:56:08

标签: ios xcode6 watchkit

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

错误启动' xxx Watchkit Extension' SPErrorInValidBundleNoGizmoBinaryMessage

我的所有模拟器都有这个问题(iPhone 5 / 5S / 6/6 + - 38mm / 42mm)

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

由于某种原因,应用程序似乎不想在模拟器上运行,即使它已经习惯了。与其他Watchkit示例应用程序一样,同一项目中包含的iPhone应用程序也可以运行。

9 个答案:

答案 0 :(得分:42)

您是否更改了应用的套装ID?如果是这样,您可能需要手动更新WatchKit扩展中的WKAppBundleIdentifier以及WatchKit App中的WKCompanionAppBundleIdentifier。

答案 1 :(得分:21)

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

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

编辑:进一步解释澄清...

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

然后在WatchKit Extension目标下,转到INFO选项卡并将Bundle Identifier设置为com.myapp.watchkitextension

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

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

结尾

答案 2 :(得分:15)

检查Info.plist“Your App WatchKit Extension”& “你的App WatchKit App”。所有标识符的第一部分应该是相同的。

在我的情况下问题出现在“Your App WatchKit Extension”> NSExtension> NSExtensionAttributes> WKAppBundleIdentifier。

My problem was in this string

答案 3 :(得分:7)

确保使用的是8.3模拟器。

使用8.2时,我始终得到此消息。尝试了这里列出的所有内容,并在数小时内挣扎。切换到8.3解决了它。讽刺,因为你必须目前将部署目标设置为8.2,但是watchkit应用程序需要8.3才能运行我猜...

答案 4 :(得分:5)

我多次检查了所有包标识符,但无法解决问题。清理构建文件夹的工作也没有完成。

但是,我能够通过关闭我的WatchKit扩展程序的功能关闭游戏中心来解决这个问题。

为iOS主机应用程序启用它似乎工作正常,但在尝试在模拟器中运行WatchKit应用程序时,为WatchKit扩展启用它会导致 SPErrorInvalidBundleNoGizmoBinaryMessage 错误,同时它完成建设没有任何投诉。

我正在为Apple Watch开发游戏,并期待着支持Game Center。实际上我的计划是从一开始就与托管的iOS应用程序进行通信,但后来我看到了GameKit扩展本身的功能中列出的Game Center,所以我希望能够在那里处理它。但是,由于它似乎不起作用,我将坚持我原来的计划,通过托管iOS应用程序来支持它。

Xcode版本6.2(6C131e)

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

答案 5 :(得分:2)

对于真实设备(不是模拟器)的问题,请执行以下内容中的所有操作: http://blog.jaredsinclair.com/post/117350678170/jareds-code-signing-tips-apple-watch-edition

最重要的是:

  

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

     

该目标的唯一应用ID代码签名身份(适用于   所有目标)该目标的唯一供应配置文件。

并确保应用ID一致:

  

您的应用ID将如下所示:

     

com.company.App-名称

     

com.company.App-Name.todaywidget

     

com.company.App-Name.watchkitapp

     

com.company.App-Name.watchkitextension

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

答案 6 :(得分:1)

我解决问题的程序是

  1. 检查WatchKit扩展和WatchKit App中的WKAppBundleIdentifier和包标识符是否正确
  2. 删除〜/ Library / Developer / CoreSimulator / Devices
  3. 的子文件夹
  4. 删除〜/ Library / Developer / Xcode / DerivedData
  5. 的子文件夹
  6. 清理我的项目
  7. 重启模拟器
  8. 运行

答案 7 :(得分:1)

我也一直在努力解决这个问题。这就解决了我在Xcode 7.1 iOS 9上遇到的问题。 只需确保按照以下命名标识您的标识符:

  • 目标 - com.myCompany.myApp
  • Watchkit app - com.myCompany.myApp.watchkitApp
  • Watchkit扩展 - com.myCompany.myApp.watchkitApp.watchkitextension

扩展程序应具有WatchKit应用程序目标的标识符+ .watchkitextension

答案 8 :(得分:0)

我已经尝试了迄今为止在此主题中发布的所有内容,但仍然无法使其发挥作用。我采取了回溯的方式,当它正在工作时,回溯我所做的每一个动作,以弄清楚它在哪一点上断......

事实证明,WatchKit App的info.plist文件不喜欢任何自定义plist条目,至少这是我在我的案例中发现的。我添加了一个名为" MyAppBundlePrefix"它导致"错误启动&xxxx Watchkit扩展' SPErrorInValidBundleNoGizmoBinaryMessage"

我希望XCode能为这个错误提供一些更具体的细节,但是我花了大约5个小时才用蛮力的方式找到它。