链接具有相同产品名称的双(iphoneos和watchos)框架

时间:2015-08-20 16:19:21

标签: xcode xcode7 ios-frameworks watch-os-2 watch-os

我最近不得不复制自己的框架,以便能够将它们与原生watchOS 2扩展程序链接起来,因为平台不同。所以对于每个框架X我都有一个X-watchos对应物。 在模拟器中以及直接构建到我的设备时,一切正常,直到我尝试归档,我才收到此链接错误:

Linking error

我在构建的watchOS框架上运行了lipo -i,果然,它的拱门是arm7arm64而不是armv7k

当我进一步查看构建的目录时,我注意到了这一点:

Derived data structure

两个版本都是同一文件的符号链接,并且因为它们具有相同的产品名称,所以它们被覆盖。我可以让他们有不同的名字,但这会使import真的很麻烦。

请注意,这不是第三方框架的问题,因为Carthage已经在不同的目录中构建它们。

编辑08/22/2015:我已经提交了一个示例项目的雷达:http://www.openradar.me/22392501

编辑08/24/2015:Xcode 7 Beta 6发行说明中已将此作为已知问题予以承认:

known issue

编辑09/9/2015:Xcode 7.1 Beta发行说明暗示这是固定的,但我还没有确认。

2 个答案:

答案 0 :(得分:1)

这在Xcode 7.1中适用于我。

答案 1 :(得分:0)

我在自己的框架中使用了类似的配置,但在每个平台(MyFramework和MyFramework-watchOS)中创建它时设置了不同的名称。不要忘记在每个框架的构建设置选项卡中手动设置一个公共产品名称(我的两者都是MyFramework)。