是否需要特殊步骤来创建和使用可在Apple Watch Extension中使用的框架?

时间:2015-10-30 13:45:16

标签: ios xcode runtime apple-watch

我正在尝试创建一个可以在Apple Watch Extension和应用程序本身中使用的框架。我这样做是通过在XCode中创建一个“Watch Framework”类型的新项目,并成功构建了一个框架。

我将其拖入Apple Watch项目,并验证它位于“Link Binary With Libraries”和“Copy Bundle Resources”中,并且能够构建和部署到设备。

但是,我在运行时收到以下错误消息。

Oct 30 08:14:30 My-s-AppleWatch ReportCrash[187] <Error>: Dyld Error Message:
Dyld Message: Library not loaded:     @rpath/SimpleWatchFramework.framework/SimpleWatchFramework
  Referenced from: /private/var/mobile/Containers/Bundle/Application/8E7660C0-B741-497C-8251-88D9243234BF/Apple Watch Extension.app/PlugIns/Apple Watch Extension Extension.appex/Apple Watch Extension Extension
  Reason: image not found
  Dyld Version: 369.12

我查看了我的主项目的.app目录(在Products下),可以看到框架目录与Apple Watch Extension的二进制文件处于同一级别(在../Watch/xxx/PLugins/yyy/下) ),所以我不确定为什么说它找不到它。

Apple的文档似乎意味着你可以做到这一点,但我不确定我是否必须采取任何特殊措施来实现这一目标。

1 个答案:

答案 0 :(得分:1)

我通过确保将框架添加到监视扩展目标的嵌入式二进制文件部分而不是链接框架来解决此问题。在此处添加它会自动在链接框架中创建一个条目。您也可以删除复制包资源步骤,将其复制到错误的位置(在应用程序扩展的根目录中)。嵌入式二进制文件将框架放在扩展程序根目录下的框架文件夹下,这是您的应用程序在没有dyld错误的情况下正确加载所需的全部内容