【问题标题】:Cocoa Touch Framework Swift with embed libraries带有嵌入库的 Cocoa Touch Framework Swift
【发布时间】:2015-03-27 10:44:11
【问题描述】:

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

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

【问题讨论】:

    标签: ios swift frameworks alamofire swifty-json


    【解决方案1】:

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


    发展

    Git 子模块

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

    迦太基

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

    carthage update --use-submodules
    

    CocoaPods

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


    部署

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

    迦太基

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

    CocoaPods

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


    总结

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-12
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      • 2015-10-03
      相关资源
      最近更新 更多