Chr*_*nce 5 frameworks ios swift xcode6 xcode7
我的目标是创建一个包含Swift和Objective-C的iOS框架,我可以在我的开发项目中使用它.该框架的本质是框架本身正在发展.因此,每次使用此框架构建项目时都很重要(我将使用"使用"项目的框架称为项目缺乏更好的术语),我想确保框架本身重新构建.我希望这是一个框架,因为我有一些使用应用程序,我希望使用相同的框架代码.我已经为今天的大部分时间而苦苦挣扎,并浪费了大量时间在本来应该做的事情上,至少在我的想法中,更容易.所以,我会分享我的过程.
首先要注意的是(这当然不是我的第一个观察!)是你不能在iOS下使用静态库来做到这一点.Xcode不会让你在静态框架中使用Swift试试吧.Xcode会拒绝你的意愿!
这是我最终的过程.我必须处理的两个主要问题是:(i)使Xcode链接到使用项目中的框架而没有错误,以及(ii)访问使用项目中框架的头部.在Apple的开明观点中,这两个问题是分开的.请注意讽刺.).
1)创建一个Cocoa Touch Framework使用Xcode.我相信这适用于Xcode6和Xcode7.使用:
文件>新建>项目> iOS>框架和库> Cocoa Touch Framework
我碰巧使用的是Xcode7.(千万不能做Cocoa Touch Static Library-就像我上面说的,Xcode中不会让您将斯威夫特成静态库).
2)使用Swift类,确保成员和函数是公共的.我没有尝试过这个,但似乎public属性对于框架用户可以看到成员和函数是必要的.
3)在框架中添加你想要的Swift类(和Objective-C).
4)关闭该框架项目.(同一个项目在Xcode中无法打开两次,您需要将框架合并到您的使用项目中).
5)在Xcode中打开您的使用项目.对我来说,这是一个现有的通用应用项目.您可能正在创建一个新的使用项目.无论如何,将Finder中框架项目的.xcodeproj文件拖到您的使用项目中.
6)在您的使用项目中,打开您的框架项目.并将框架文件拖入Embed FrameworksBuild Phases(Embed Frameworks当我第一次开始实验时,该部分在Build Phases中没有出现,我还不知道是什么魔法导致它出现!).
到目前为止,这些步骤应该使您能够构建和链接,而无需实际集成库代码的使用.(我正在使用https://github.com/RadiusNetworks/swift-framework-example进行一些测试).
7)现在为了恩典的政变:在Build Settings,寻找Framework Search Paths.并加入:
${TARGET_BUILD_DIR}/YourFrameworkName.framework
Run Code Online (Sandbox Code Playgroud)
(看来你不必将其标记为递归).
8)在使用框架的Swift代码文件中,您需要在每个文件的顶部添加一个导入:
import YourFrameworkName
Run Code Online (Sandbox Code Playgroud)
您现在应该可以使用新库进行构建和链接!
9)还有一个问题:确保您Deployment Target的框架与您的目标项目匹配.例如,如果您的使用项目是为iOS7构建的,请确保您的框架为iOS7或更早版本构建.
10)第二个问题(10/23/15):我刚刚了解到我的框架需要将"App-Swift.h"(我使用的名称)作为Build中的Objective-C生成的接口头名称设置.当我把这个(Objective-C Generated Interface Header)拿出来(尝试解决另一个问题)时,我会在App-Swift.h中遇到一些有趣的问题.这些问题看起来像: "无法找到NSObject的接口声明"?
11)第三个问题(10/29/15):当我尝试将我的第一个应用程序上传到使用此框架的iTunes Connect时,我收到了上传错误.错误如下:
ERROR ITMS-90206:"无效的捆绑包.'Your.app/Frameworks/YourFramework.framework'中的捆绑包含不允许的文件'Frameworks'."
各种SO和其他帖子都遇到了这种错误,对我来说,诀窍是,对于Framework目标,在Build Settings中,将"Embedded Content Contains Swift Code"设置为NO.(我的应用程序Build Settings已将此标志设置为NO).
完成大部分步骤的示例项目位于https://github.com/crspybits/CocoaTouchFramework.git
| 归档时间: |
|
| 查看次数: |
14691 次 |
| 最近记录: |