1

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

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

1 回答 1

5

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


发展

Git 子模块

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

迦太基

Carthage--use-submodules还通过flag支持 git 子模块。您需要做的就是通过 homebrew安装carthage,然后使用以下命令创建一个添加 Alamofire 和 SwiftyJSON 的 Cartfile

carthage update --use-submodules

可可豆荚

CocoaPods是一个依赖管理系统,它允许您轻松地拉入和部署给定库的不同版本。由于AlamofireSwiftyJSON都支持 CocoaPods,因此您可以创建一个Podfile并运行pod install以将 pod 拉入您的库中。我不会推荐这个,因为这是一个相当重的方法。相反,我建议使用其中一个Git SubmodulesCarthage进行开发。


部署

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

迦太基

如果您使用 Carthage 导入了 git 子模块,那么您可能已经完全支持 Carthage 部署。这取决于您是否使用Cartfile.private文件来拉入您的依赖项。鉴于您正在尝试做的事情,我怀疑您会使用私人 Cartfile 而是使用公共 Cartfile。这意味着你应该很好地开箱即用。惊人的!

可可豆荚

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


概括

如您所见,这里有很多选择。我强烈推荐使用 Carthage 来引入你的 git 子模块,然后支持 Carthage 和 CocoaPods 进行部署。我知道这是一个很大的努力,所以你可能想专注于一个或另一个。很抱歉有大量的链接和信息,但你的问题让我相信你会从所有这些不同的来源中受益匪浅。

希望这可以帮助您成为依赖开发和部署的忍者。

于 2015-03-27T15:56:54.793 回答