ios - Xcode 6.3 + 尝试在模拟器中运行 Watch App 结果为 "FBSOpenApplicationErrorDomain error 4"

标签 ios simulator watchkit apple-watch xcode6.3

我正在为我的一个应用程序编写一个 Watch App。由于我的团队还没有 Apple Watch,我也在我的构建服务器上为我的 QA 团队构建了我的应用程序的模拟器版本,他们使用“xcrun simctl”来运行和测试 watch 应用程序本身。

在 Xcode 6.3 到来之前,一切都很顺利。 使用 Xcode 6.3,当我尝试在我的开发机器上本地构建应用程序时收到此错误:

error: The value of CFBundleVersion in your WatchKit app's Info.plist (1) does not match the value in your companion app's Info.plist (2.0.492). These values are required to match.

为了解决这个问题,我修改了我的 info.plist 文件以包含相同的 CFBundleVersion。此修改解决了我本地开发机器上的构建问题,但是:QA 仍然能够运行 iOS 应用程序,但启动 Watch App 失败并出现此错误:

> xcrun simctl launch 0D5238ED-CBE9-4DCC-961D-BC756E0885CD com.company.enterprise.appname.watchapp
An error was encountered processing the command (code=4):
The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 4.)

我在系统控制台日志中看不到任何可能与此相关的内容。 :/

您知道如何解决这个问题吗?

在此先感谢您的帮助!

最佳答案

我也遇到了这个问题。

基本上,您应该有 3 个目标(如果算上测试,则为 4 个)。如果你检查构建阶段,你会发现 WatchKit App 必须首先编译,然后是 WatchKit Extension,最后是主应用程序。

我有一个我已经使用了很长时间的脚本,它会在每次编译应用程序时自动更新 CFBundleVersion。

在扩展和主应用程序的构建阶段中有一个“运行脚本”的地方,但不是 WatchKit 应用程序。

因此,首先编译的是 WatchKit 应用程序,然后将其移至构建目录。它将具有上次手动输入的 CFBundleVersion 中的任何数字。

运行的第二件事是扩展编译。这是我的脚本运行和更新数字的地方。但是,这个数字现在比 WatchKit 应用程序中的数字多了一个,它已经被移动到构建目录。因此,即使它们开始使用相同的数字(比如 1),但当扩展名移过去时,它现在是 2,并且存在不匹配。

无法使用运行脚本以自动方式更新 WatchKit 应用程序 CFBundleVersion。

就个人而言,我要解决它的方法是在我想要更改时在我的 WatchKit 应用程序中手动设置 CFBundleVersion,然后我将在构建阶段为其他两个目标运行脚本将 WatchKit App 中的 CFBundleVersion 复制到它们各自的 CFBundleVersions 中,以保持它们全部同步。

长话短说,您需要跟踪三个 CFBundleVersions 并确保它们都是相同的数字。

关于ios - Xcode 6.3 + 尝试在模拟器中运行 Watch App 结果为 "FBSOpenApplicationErrorDomain error 4",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695243/

相关文章:

ios - 如何在 View Controller 的多个 View 中添加多种渐变颜色

ios - getPlaceholderTemplateForComplication() 方法何时被调用?

ios - WatchKit 扩展包 ID 不可用

swift - WKExtension.shared().delegate = self 现在显示无法分配给属性 : 'delegate' is a get-only property

ios - UIToolbar UILabel x y 偏移不起作用

ios - 使用 UIImagePickerController 连续拍摄多张照片

c# - Xamarin Forms PCL 如何从 iOS customRenderer 进行 PushAsync

assembly - Windows 上的 ARM 模拟器

dos - Zen Simulator到底是什么?

iphone - 应用程序不会在 iPhone 模拟器上旋转