带有嵌入库的 Cocoa Touch Framework Swift
Posted
技术标签:
【中文标题】带有嵌入库的 Cocoa Touch Framework Swift【英文标题】:Cocoa Touch Framework Swift with embed libraries 【发布时间】:2015-03-27 10:44:11 【问题描述】:我正在开发一套包含通用模块的应用程序。 我想将通用模块存储在 Cocoa Touch 框架中。 该框架还可能包含库和 Alamofire 和 SwiftyJSON,因为它们在模块中被广泛使用。 目前,尽管在网上阅读了很多教程、文章等,但我无法得到一个稳定的解决方案。
是否可以将框架 Alamofire 和 SwiftyJSON 集成到自定义框架中,或者将它们集成到使用该框架的不同项目中更好(它们也将单独需要)? 是否可以生成在模拟器和手机上运行的框架(无论方法:子项目与否,动态或静态库,胖库)?【问题讨论】:
【参考方案1】:你绝对可以做到这一点。您目前有三个选项可用于设置此开发和两个部署选项。
发展
Git 子模块
Git submodules 是将其他库引入项目存储库以嵌入项目的好方法。您需要做的就是添加子模块,然后将该库的 Xcode 项目拖到您的 Xcode 项目中,使其嵌套在您的项目中。然后您需要将该框架作为链接目标添加到您的库中。
迦太基
Carthage 还通过 --use-submodules
标志支持 git 子模块。您需要做的就是通过自制程序 install carthage,然后使用以下命令创建一个添加 Alamofire 和 SwiftyJSON 的 Cartfile。
carthage update --use-submodules
CocoaPods
CocoaPods 是一个依赖管理系统,允许您轻松地拉入和部署给定库的不同版本。由于Alamofire 和SwiftyJSON 都支持CocoaPods,您可以创建Podfile,然后运行pod install
将pod 拉入您的库中。我不会推荐这个,因为这是一个相当重的方法。相反,我建议使用 Git Submodules
或 Carthage
进行开发。
部署
部署是一个非常不同的情况。目前,在 OSS 社区(包括 Alamofire 和 Carthage)中有两种相当强大的 ios 和 OSX 部署机制。
迦太基
如果您使用 Carthage 导入 git 子模块,那么您可能已经完全支持 Carthage 部署。这取决于您是否使用Cartfile.private 文件来引入您的依赖项。鉴于您正在尝试做的事情,我怀疑您会使用私人 Cartfile 而是使用公共 Cartfile。这意味着你应该很好地开箱即用。太棒了!
CocoaPods
CocoaPods 与 Carthage 有很大不同,并且与 Carthage 相比具有一些很大的优势,但需要付出一定的代价。您需要创建一个 podspec 文件并将其推送到公共或私有规范存储库中。然后任何人都可以使用 Podfile 将您的 pod 拉入他们的项目中。
总结
如您所见,这里有很多选项。我强烈推荐使用 Carthage 来引入你的 git 子模块,然后支持 Carthage 和 CocoaPods 进行部署。我知道这是一个很大的努力,所以你可能想专注于一个或另一个。很抱歉有大量的链接和信息,但您的问题让我相信您将从所有这些不同的来源中受益匪浅。
希望这可以帮助您成为依赖项开发和部署的忍者。
【讨论】:
以上是关于带有嵌入库的 Cocoa Touch Framework Swift的主要内容,如果未能解决你的问题,请参考以下文章
静态 cocoa/cocoa-touch 库应该基于啥样的 SDK?
怎么调试cocoa touch static library