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 Extension的function 来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”),然后重试。 这是为我做的踢球。
我解决问题的程序是
- 检查WatchKit扩展和WatchKit应用程序中的WKAppBundleIdentifier和包标识符是否正确
- 删除〜/ Library / Developer / CoreSimulator / Devices的子文件夹
- 删除〜/ Library / Developer / Xcode / DerivedData的子文件夹
- 清理我的项目
- 重新启动模拟器
- 跑
我也一直在努力。 这是什么解决了我的问题在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个小时的时间才发现这个错误。