ios - 带有嵌入库的 Cocoa Touch Framework Swift

标签 ios swift frameworks alamofire swifty-json

我正在开发一套包含通用模块的应用程序。 我想将通用模块存储在 Cocoa Touch Framework 中。 该框架还可能包含库以及 Alamofire 和 SwiftyJSON,因为它们在模块中被广泛使用。 目前,尽管在互联网上阅读了很多教程、文章等,但我无法获得稳定的解决方案。

  • 是否可以将框架 Alamofire 和 SwiftyJSON 集成到自定义框架中,还是将它们集成到使用该框架的不同项目中更好(它们也需要单独使用)?
  • 是否可以生成在模拟器和手机上运行的框架(无论方法:是否为子项目,动态或静态库,fat 库)?

最佳答案

你绝对可以做到这一点。您目前有三个选项用于设置此开发和两个部署选项。


发展

Git 子模块

Git submodules是将其他库引入项目存储库以嵌入项目的好方法。您需要做的就是添加子模块,然后将该库的 Xcode 项目拖到您的 Xcode 项目中,使其嵌套在您的项目中。然后您需要将该框架作为链接目标添加到您的库中。

迦太基

Carthage还通过 --use-submodules 标志支持 git 子模块。您需要做的就是install carthage 通过自制软件,然后创建一个 Cartfile使用以下命令添加 Alamofire 和 SwiftyJSON。

carthage update --use-submodules

CocoaPods

CocoaPods是一个依赖管理系统,允许您轻松引入和部署给定库的不同版本。由于两者AlamofireSwiftyJSON支持 CocoaPods,你可以创建一个 Podfile ,然后运行 ​​pod install 将 pod 拉入您的库。我不推荐这样做,因为这是一种相当重量级的方法。相反,我建议使用 Git SubmodulesCarthage 进行开发。


部署

部署是一个非常不同的情况。目前,在 OSS 社区(包括 Alamofire 和 Carthage)中广泛使用的 iOS 和 OSX 有两种相当健壮的部署机制。

迦太基

如果您使用 Carthage 导入了 git 子模块,那么您可能已经完全支持 Carthage 部署。这取决于您是否使用了 Cartfile.private文件以引入您的依赖项。考虑到您要执行的操作,我怀疑您是否会使用私有(private) Cartfile 而是使用公共(public)文件。这意味着您应该开箱即用。太棒了!

CocoaPods

CocoaPods 与 Carthage 有很大不同,并且与 Carthage 相比有一些很大的优势,但要付出一定的代价。您需要创建一个 podspec 文件并将其推送到公共(public)或私有(private)规范存储库中。然后任何人都可以使用 Podfile 将您的 Pod 拉入他们的项目。


总结

如您所见,这里有许多选项。我强烈建议使用 Carthage 来引入你的 git 子模块,然后支持 Carthage 和 CocoaPods 进行部署。我知道这需要付出很多努力,因此您可能希望专注于其中之一。很抱歉提供了大量的链接和信息,但你的问题让我相信你会从所有这些不同的来源中受益匪浅。

希望这能帮助您成为依赖项开发和部署高手。

关于ios - 带有嵌入库的 Cocoa Touch Framework Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29298812/

相关文章:

ios - 尝试在解除分配时加载 View Controller 的 View 。核心聚焦

ios - 如何在没有任何动画的情况下直接将模态视图呈现为表单

swift - 在 MacOS 上将 Vapor 编译为独立应用程序

apache-flex - 法姆维尔克隆

ios - 在iOS中为不同架构实现单独的框架

java - 需要帮助找出轻量级 Java EE 框架

ios - 为什么我的 UISearchController 委托(delegate)方法没有被调用?

ios - 自定义 UIButton 以兼容 iPhone 5

bash - 带有默认值和killall bash命令的NSTask

ios - 从具有不同类名的另一个对象保存一个对象 - IOS Swift