【发布时间】:2015-10-07 14:31:09
【问题描述】:
自从在 iOS 8 中引入嵌入式二进制文件以来,我一直希望将很多常用代码移植到框架中。我决定等一年再做,今年,有了 Xcode 7 Beta 和 iOS 9,我就开始这样做了。
我已经在 Xcode 7 中启动了一个 Cocoa Touch 框架项目,我想将它编译成一个可用的框架。我可以用它把我的项目编译成一个.framework,但是有一些问题;也就是说,该框架似乎不能导入到新项目中(我将很快描述我为此所做的步骤)。因此,我不确定我的框架是否有任何可见的符号。
这是我为创建框架所做的:
- 将我的框架创建为 Cocoa Touch 框架。
- 进入目标的构建阶段,进入标题,并将我所有的 Swift 文件添加到“公共”部分,希望能够导出我的所有符号,而不必将它们标记为
public。 - 我试图将我的项目归档为一个框架。目前,Xcode 7 Beta 3 似乎有一个错误(将在今天晚些时候报告),它会生成损坏的存档文件。出于这个原因,我无法从管理器窗口中获取我的框架。为了解决这个问题,我将 Xcode 中 Run 操作的模式从 Debug 更改为 Release,构建它并从我的项目的
build/iphoneos-release目录中获取它生成的.framework。这是一个快速测试,所以我不需要为模拟器生成的框架。
这就是我尝试将框架添加到新项目中所做的:
- 创建了一个“框架”组(用于组织目的)并将框架拖到那里,当它询问我是否要将文件复制到我的项目目录时选择“是”。
- 转到我的目标设置,从“链接库”中删除我的框架(它是自动添加到那里的),而是将它添加到嵌入式二进制文件中。这再次将框架添加到链接库,所以我不得不从那里删除它两次。将框架留在链接库中会导致链接器错误(找不到框架 - 不知道为什么,但我认为这与我的问题无关,我也应该向 Apple 报告),但是一旦你从那里删除它似乎将其添加到嵌入式二进制文件时编译正常。
- 试图在文件中导入我的框架。 Xcode 抱怨“没有这样的模块”。
不幸的是,尽管嵌入式框架已经出现了大约一年,但我找不到太多关于这个主题的文章。
所以我的问题是:我是否正确地创建了框架,是否有可能我的框架/其他任何东西由于 Xcode 7 Beta 错误而失败?或者是否有不同的程序来创建我想用作嵌入式二进制文件的框架?我可能应该提到我想让这个库开源,我认为将一个普通的 .framework 文件分发给想要使用它的人会很整洁。
【问题讨论】:
标签: ios xcode swift2 xcode7-beta3 embedded-binary