【问题标题】:Swift, iOS 8+ Framework斯威夫特,iOS 8+ 框架
【发布时间】:2016-11-23 01:20:45
【问题描述】:

我想创建一个共享的 Swift 库,也就是 Cocoa Touch Framework,以便在我的两个 iOS 应用程序之间共享。我不是全职的 iOS 开发人员,所以我对 XCode 等方面的知识有很多空白。

我发现这篇文章Creating your first iOS Framework 并认为我是免费的:-)。可悲的是,我无法让它工作,主要是因为我不知道自己在做什么。

我只是想在我的两个应用程序之间创建一个共享 Swift 代码的(私有)框架(库)。我想在框架中使用 CocoaPods 来引入其他框架,例如 Alamofire。我无意公开这个框架。

我几乎不明白为什么人们会使用 Carthage(与 CocoaPods 相比)作为管理框架并将其导入消费应用程序的机制。但是,该示例混合了 Carthage 和 CocoaPods,并设置了一个我认为不想要的 Podspec,这让我感到困惑。

在文章中,一般的子项目的概念,以及将 Carthage 下载的框架拖到框架中并在消费应用程序中“导入”共享框架本身都让我感到困惑。我想知道我为什么要这样做以及这样做的后果是什么。

那么,我是不是走错路了?有没有人想在两个相关应用程序之间私下共享 Swift 代码和其他工件的简单方法?

谁能解释一下这个理论?

当我想到复制代码时,我几乎没有时间来处理我的应用程序,而且我的肉体爬行,所以我浪费了无数时间来寻找那个简单的指南,并浪费了更多的时间来尝试遵循我找到的那些 - 所有这些都是为了令人失望的结局。

任何帮助将不胜感激。

谢谢, 彼得...

【问题讨论】:

    标签: ios swift xcode frameworks xcode7


    【解决方案1】:

    我建议您使用 Carthage,因为它更简单,并且不会对您的项目文件施加任何限制。由于我从未使用过 CocoaPods,因此我无法为您提供帮助,我将指导您完成 Carthage 所需的步骤:

    1. 如果您还没有安装 Homebrew,它是 OSX 上最常用的包管理器。命令:

      /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
      
    2. 安装迦太基。命令:

      brew update && brew install carthage
      
    3. 使用 iOS Cocoa Touch Framework 模板创建一个新项目。保存时勾选“创建Git仓库”。

    4. .gitignore 文件添加到您的项目文件夹中。如果你在项目目录中,你可以这样做:

      curl https://raw.githubusercontent.com/github/gitignore/master/Swift.gitignore > .gitignore
      
    5. 将你想要的代码添加到项目中,记住在框架外只有public声明可用。

    6. 编辑方案(快捷键⌘Shared。这是 Carthage 工作所必需的。

    7. 提交更改(快捷键 ⌥⌘C),检查每个文件(右键单击 > 检查全部)并输入提交消息(例如“第一个版本”)

    8. 标记发布(Carthage 需要):命令(在项目目录中):

      git tag 0.1 -m "Version 0.1"
      
    9. 运行以下命令,通过 Carthage 验证和构建项目:

      carthage build --no-skip-current
      

    您的框架现在应该已设置为与 Carthage 一起使用。您可以按照here 的步骤将框架添加到您的 iOS 项目中:

    1. 在您的项目中添加一个Cartfile(只需一个名为Carthage(无扩展名)的文件),您可以为此使用Xcode。该文件应包含以下内容:

      git "file:///path/to/your/framework/project/directory"
      github "Alamofire/Alamofire"
      # Other frameworks
      
    2. 运行

      carthage update --platform iOS
      
    3. 打开 Carthage/Build/iOS 文件夹(在 Finder 中)并将每个 .framework 文件拖放到项目设置(常规选项卡)中的 Linked Frameworks and Libraries 部分。

    4. 添加一个新的Run Script 阶段(项目设置> 构建阶段>“+”按钮)。放线

      /usr/local/bin/carthage copy-frameworks
      

      并将每个框架添加到“输入文件”部分:

      $(SRCROOT)/Carthage/Build/iOS/MyFramework.framework
      $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
      

    现在应该可以了,如果你卡在某个地方,请告诉我。

    编辑:当您对库进行更改时,您可以这样做:

    1. 提交
    2. git tag 0.2 -m "Version 0.2"

    在您使用该框架的项目中,只需运行carthage update --platform iOS,无需执行其他操作。

    如果您的框架也需要使用 Alamofire,它需要与其他项目相同的 Cartfile 设置。在运行carthage update 时,Carthage 将解析每个框架所需的所有子框架,以及它们的子框架等。

    可能存在冲突,例如一个Cartfile 想要"Alamofire" ~> "1.0" 而另一个"Alamofire" ~> "2.0",但这种情况很少发生。

    【讨论】:

    • 非常感谢您抽出宝贵时间来做这件事。我还没有机会尝试这个,但我确实有几个问题。我主要对开发生命周期感到困惑。也就是说,当我对库进行更改时会发生什么?是否需要再次使用 carthage build 命令来构建?标签是否必须更改才能让消费者识别更改?另外,您能否解释一下消费者和图书馆都使用的 3rd 方库会发生什么?我确信所有人都需要 Alamofire。会有冲突吗?
    • 这个答案非常清晰和有用!完美运行。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多