安装应用程序失败错误:无效的捆绑包 - 没有Apple Watch二进制文件。

11

我正在尝试为Apple Watch开发我的应用程序的扩展。

但是,当我尝试在手表上安装应用程序时,出现以下错误:

AppName安装失败,错误:无效的捆绑包 - 没有Apple Watch二进制文件

在我的info.plist文件中...

对于扩展,我有:

<key>CFBundleIdentifier</key>
    <string>com.mycompany.AppName.watchkitextension</string>
<key>WKAppBundleIdentifier</key>
    <string>com.mycompany.AppName.watchkitapp</string>

对于WatchKit应用程序,我已经:

<key>CFBundleIdentifier</key
    <string>com.mycompany.AppName.watchkitapp</string>
<key>WKCompanionAppBundleIdentifier</key>
    <string>com.mycompany.AppName</string>

我的应用程序中,我有:

<key>CFBundleIdentifier</key>
    <string>com.mycompany.AppName</string>

我错过了什么吗?

10个回答

16

这个错误困扰了我约7小时,最后在绝望中重启手表后,错误消失了。


这个解决方案只对我一个项目有效。另一个应用程序仍然存在相同的错误。 - hitme

4

这个错误困扰了我好几个小时。对我而言,问题在于我的 WatchKit Extension 的部署目标设置高于我手机的 iOS 版本。我只需将其更改为与我的设备版本匹配即可完美解决。 enter image description here


3

对我来说,问题是通过将手表应用程序添加到我的iOS目标的“嵌入手表内容”部分来解决的。

我正在使用Xcode 7和watchOS 2.0。它在设备上构建得很好,但模拟器给了我这个错误。

步骤:

  1. 找到您的iOS目标
  2. 单击“Build Phases”
  3. 确保您的手表应用程序(.app)包含在“Target Dependencies”和“Embed Watch Content”中

这对我来说是解决方法,我之前已经从构建中删除了手表应用程序。 - Wez

2
尝试在WatchKit应用程序的info.plist中显式设置“可执行文件”。 我更改了可执行文件的名称,遇到了相同的问题。

这是一个可能的解释。事实上,我正在使用相同的设置在两个项目上工作。一个用于测试watchkit框架,另一个项目是真正的项目。我没有检查可执行文件。我会尽快尝试一下。谢谢。 - ejanowski
补充一点:尽管我已经解决了这个错误,但我仍然在安装过程中遇到问题。我的WatchKit应用程序在iPhone手表应用程序中一直卡在“正在安装…”上。最终,我通过检查我的产品名称/捆绑名称,并确保它们没有重复来解决了这些问题。 - Sohail
如果你不使用$(EXECUTABLE_NAME),那么你的可执行文件名是什么意思? - JLoewy
当我尝试更改可执行文件的名称时,即使在没有收到Xcode错误的情况下,我也无法构建项目。 - James Parker
经过多次尝试,对我有效的方法是将扩展名的plist中的“可执行文件”更改为扩展名(在产品下显示的名称,减去“.appex”)。 - meelawsh
显示剩余4条评论

1
在我的情况下,这些解决方案都对我没有用,但是我注意到默认情况下,我的WatchKit应用需要iOS 8.3,而我的手机正在运行iOS 8.2。将操作系统更新到8.3解决了我的问题。这似乎是一个显而易见的解决方案,但我想分享给任何可能遇到同样问题的人。

0
在我的情况下,我是在构建WatchOS2应用程序时遇到了这个问题。我通过设置以下方案来解决它:
手表扩展方案构建 3个目标:iPhone(2个依赖项)+扩展(无依赖项)+手表应用程序
Running Extension Scheme on iPhone simulator -> works!

0

有时候重置手表/xcode/iphone并不能解决问题,正如其他答案所描述的那样。

还有一种情况可以解决这个错误: 当我将我的iPhone语言更改为非英语(在我的情况下是俄语)时,就会出现这个错误。 当我将语言设置回英语时,一切都恢复正常!


0
在我的情况下,这是一个 Info.plist 配置错误。Bundle identifier 与 NSExtension -> NSExtensionAttributes -> WKAppBundleIdentifier 不同。
将相同的值设置为修复了错误。

0

请确保:

  • iOS 应用程序的 bundle id 是手表应用程序和扩展程序的 bundle id 的前缀
  • 在您的手表应用程序的 Info.plist 中,WKCompanionAppBundleIdentifier 的值与您的 iOS 应用程序的 bundle id 匹配。
  • iOS 应用程序、手表应用程序和扩展程序应该使用相同的证书进行签名。
  • iOS 应用程序目标中必须有一个构建阶段:
    • 目标:产品目录
    • 子路径:$(CONTENTS_FOLDER_PATH)/Watch
    • 单击 +,添加您的手表应用程序目标。

0

在 info.plist 中填写 Bundle 显示名称。默认为空,会有一个警告。(Xcode 7.3)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接