iOS9:在模拟器和设备上使用动态框架

Posted

技术标签:

【中文标题】iOS9:在模拟器和设备上使用动态框架【英文标题】:iOS9: Using dynamic framework with Simulator and Device 【发布时间】:2016-03-08 15:35:03 【问题描述】:

我创建了一个动态可可框架,我想在我的应用程序中使用它。

在为实际设备构建框架后,我将其带到应用程序中。我只能在该设备上运行该应用程序。

当我尝试在模拟器上运行它时,无法识别框架文件。我收到错误消息:'ViewController' is unavailable: cannot find swift for declaration for this class

我尝试为 iPhone 6 模拟器构建框架并在 iPhone 6 模拟器上运行应用程序,但同样的问题仍然存在。

我如何创建/构建一个可以带入任何应用程序并能够在模拟器和设备上使用的单一框架?

【问题讨论】:

你可以做一个胖库,可以看这个链接:***.com/a/54977145/3992606 【参考方案1】:

您要做的是构建一个“通用框架”。我回答了一个关于这个here的问题,但我会为你总结一下要点:

您无法编译它的原因是模拟器运行在与设备不同的架构上。此外,不同的 iPhone 型号在不同的架构上运行。您可以查看this 图像以了解每种架构上运行的设备。模拟器在 i386 和 x86 的 mac arcs 上运行。您需要做的是为每个架构构建,然后通过一个称为“lipo”的过程将它们合并在一起。

为此,您需要将“Build Active Architectures”设置为 NO。然后你应该为“通用 ios 设备”构建你的框架。然后,如果您从我的第一个链接复制构建脚本,并将其作为聚合目标,这将构建每个架构并将它们合并到您的最终产品中。这称为FAT框架,然后您可以在终端中运行命令“lipo -info”,您将看到您的框架包含所有架构,这就是您想要的。

【讨论】:

嗨。感谢您的发布。我在我的框架中使用了另一个名为 Alamofire 的框架。当我使用你的脚本时,我的框架无法识别 Alamofire。 很棒的剧本。是否可以通过这种方式构建跨平台(例如iOS + watchOS)框架? 我想是的,不确定因为我还没有制作手表扩展。我认为手表可能存在一些差异,但我知道您可以制作一个适用于 TVos 的通用框架 也非常适合我的通用框架。谢谢

以上是关于iOS9:在模拟器和设备上使用动态框架的主要内容,如果未能解决你的问题,请参考以下文章

加载本地化 pathForResource 在 iOS 模拟器上工作,但在设备上失败

升级到 iOS 9 和 MobileFirst 7.1 后无法登录设备或模拟器上的应用程序

UILocalNotification 不会在 ios9 设备上触发(横幅未显示)

发布版本 Xcode8 在 iOS 9 设备上崩溃

iOS 框架不适用于模拟器

glReadPixles 在设备上返回 0 但适用于模拟器 - iOS 9