将静态库目标转换为Xcode项目中的框架目标

时间:2015-10-12 18:33:19

标签: ios swift frameworks static-libraries

我有一个Xcode项目,它生成一个静态库。我的团队计划在Swift中进行所有新开发。 It is not possible to add Swift files to the static library project。我们正在放弃对iOS 7的支持,因此现在可以在我们的iOS应用程序中包含框架。因此,我打算将我的静态库项目转换为框架项目。

我看过,但找不到任何有关如何执行此转换的工具或建议。静态库很大(超过100个.m文件)。

我希望得到比创建新的并行框架目标更好的答案。我试过两次。第一次作为一个快速的目标,但我无法轻松导入所有的Objective C文件。接下来,作为Objective C目标,但不再有.pch了。

2 个答案:

答案 0 :(得分:9)

要从静态链接库转换静态/动态链接框架,

  1. 在现有的静态链接库项目中添加一个新的cocoa touch框架作为TARGET。
  2. 在Build Phases中,将所有.m,.mm,.c,.cpp,.metal等添加到静态链接框架目标的“\ Build Phases \ Compile Sources”阶段。
  3. 将要公开的标题放入“\ Build Phases \ Headers”。
  4. 对于动态链接框架,请记住在Build Settings中检查Mach-O Type设置。如果要使用swift,则需要确保将Mach-O类型设置为动态库,以使其成为动态链接框架。对于静态链接框架,您需要将Mach-O类型设置为静态库,但不能在转换后的静态链接框架中使用swift(只允许使用objective-c,objective-c ++,C ++,C等)
  5. 然后,对于想要使用此框架的应用程序,只需将标题包含为#import,并将框架添加到App Target的“Build Phases \ Link Binary With Libraries”中。如果转换的框架是动态链接框架,则需要将其放入“嵌入式二进制文件”。

答案 1 :(得分:2)

我看到有人手动创建了框架,创建了module.framework文件并将所有头文件复制到module.framework / Headers文件夹中。这个解决方案似乎有效,项目可以正确导入文件并正确地将它们视为框架。

我不确定这是做这件事最好的方法,我在一个大型项目上试图通过cocoapods导入静态库,但似乎我遇到了一些问题使用框架的一些类的可见性。