当我打开现有的Watchkit应用程序(Xcode 6.2)时,它正确编译,模拟器启动(iPhone + Watch),然后是有意义的错误:
错误启动' xxx Watchkit Extension' SPErrorInValidBundleNoGizmoBinaryMessage
我的所有模拟器都有这个问题(iPhone 5 / 5S / 6/6 + - 38mm / 42mm)
任何想法可能是什么问题?
由于某种原因,应用程序似乎不想在模拟器上运行,即使它已经习惯了。与其他Watchkit示例应用程序一样,同一项目中包含的iPhone应用程序也可以运行。
答案 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。
答案 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)
答案 7 :(得分:1)
我也一直在努力解决这个问题。这就解决了我在Xcode 7.1 iOS 9上遇到的问题。 只需确保按照以下命名标识您的标识符:
扩展程序应具有WatchKit应用程序目标的标识符+ .watchkitextension
答案 8 :(得分:0)
我已经尝试了迄今为止在此主题中发布的所有内容,但仍然无法使其发挥作用。我采取了回溯的方式,当它正在工作时,回溯我所做的每一个动作,以弄清楚它在哪一点上断......
事实证明,WatchKit App的info.plist文件不喜欢任何自定义plist条目,至少这是我在我的案例中发现的。我添加了一个名为" MyAppBundlePrefix"它导致"错误启动&xxxx Watchkit扩展' SPErrorInValidBundleNoGizmoBinaryMessage"
我希望XCode能为这个错误提供一些更具体的细节,但是我花了大约5个小时才用蛮力的方式找到它。