链接具有相同产品名称的双重(iphoneos 和 watchos)框架
Linking dual (iphoneos and watchos) frameworks with same product name
我最近不得不复制我自己的框架,以便能够从原生 watchOS 2 扩展中 link 它们,因为平台不同。因此,对于每个框架 X,我都有一个对应的 X-watchos。
在模拟器中以及直接构建到我的设备时一切正常,直到我尝试存档时我才收到这个 linking 错误:
我 运行 lipo -i
在构建的 watchOS 框架上,果然,它的拱门是 arm7
和 arm64
而不是 armv7k
.
当我进一步查看构建目录时,我注意到了这一点:
两个版本是同一个文件的符号link,并且因为它们具有相同的产品名称,所以它们被覆盖了。我可以让它们有不同的名字,但这会使 import
给它们命名真的很麻烦。
请注意,这对于第 3 方框架来说不是问题,因为 Carthage
已经在单独的目录中构建它们。
编辑 2015 年 8 月 22 日:我已经提交了带有示例项目的雷达:http://www.openradar.me/22392501
编辑 08/24/2015:这已在 Xcode 7 Beta 6 发行说明中确认为已知问题:
编辑 2015 年 9 月 9 日:Xcode 7.1 Beta 发行说明暗示这是固定的,但我还没有确认。
我在自己的框架中使用了类似的配置,但在每个平台(MyFramework 和 MyFramework-watchOS)中创建它时我设置了不同的名称。不要忘记在每个框架的构建设置选项卡中手动设置通用产品名称(我的都是 MyFramework)。
这在 Xcode 7.1 中对我有用。
我最近不得不复制我自己的框架,以便能够从原生 watchOS 2 扩展中 link 它们,因为平台不同。因此,对于每个框架 X,我都有一个对应的 X-watchos。 在模拟器中以及直接构建到我的设备时一切正常,直到我尝试存档时我才收到这个 linking 错误:
我 运行 lipo -i
在构建的 watchOS 框架上,果然,它的拱门是 arm7
和 arm64
而不是 armv7k
.
当我进一步查看构建目录时,我注意到了这一点:
两个版本是同一个文件的符号link,并且因为它们具有相同的产品名称,所以它们被覆盖了。我可以让它们有不同的名字,但这会使 import
给它们命名真的很麻烦。
请注意,这对于第 3 方框架来说不是问题,因为 Carthage
已经在单独的目录中构建它们。
编辑 2015 年 8 月 22 日:我已经提交了带有示例项目的雷达:http://www.openradar.me/22392501
编辑 08/24/2015:这已在 Xcode 7 Beta 6 发行说明中确认为已知问题:
编辑 2015 年 9 月 9 日:Xcode 7.1 Beta 发行说明暗示这是固定的,但我还没有确认。
我在自己的框架中使用了类似的配置,但在每个平台(MyFramework 和 MyFramework-watchOS)中创建它时我设置了不同的名称。不要忘记在每个框架的构建设置选项卡中手动设置通用产品名称(我的都是 MyFramework)。
这在 Xcode 7.1 中对我有用。