【问题标题】:How to use frameworks imported with carthage in swift playground如何在 Swift Playground 中使用通过 carthage 导入的框架
【发布时间】:2015-07-05 03:41:27
【问题描述】:

我有一个 swift 项目,其中包含一些通过 carthage 添加的框架。是否可以在项目内部的操场上使用这些框架以及如何使用它,因为

import Argo

没有用:(

【问题讨论】:

    标签: swift xcode swift-playground carthage


    【解决方案1】:

    这在某个时候停止了工作。叹息

    我现在要做的是

    • 创建 macOS > 命令行工具。
    • 使用github "ReactiveX/RxSwift" 创建一个购物车文件并运行carthage update --platform iOS
    • 转到命令行工具目标并将 Carthage/Build/iOS 中的框架添加到链接框架和库中
    • 添加 Playground 文件。

    此时我可以运行 Playground 文件了。

    ??‍♂️


    如果 Playground 是构建配置为访问这些框架的目标的工作区的一部分,则它可以访问外部框架。

    如果您想在现有的 carthage 项目中添加 Playground,只需将项目保存为工作区(文件 > 另存为工作区...),构建目标,就完成了。

    如果您只想分发带有第三方框架的 Playground,则需要创建一个虚拟工作区。以下是使用 RxSwift 框架的游乐场的分步示例:

    1. 创建一个新的 Xcode 项目,类型为跨平台 > 其他 > 空。将其命名为 RxPlayground。
      这将创建这个结构 RxPlayground/RxPlayground.xcodeproj 并打开一个空白 Xcode。

    2. 使用 Carthage 下载 RxSwift

      • 使用以下行创建一个购物车文件:github "ReactiveX/RxSwift" "swift4.0"
      • 使用 carthage update --platform iOS 运行 Carthage。
    3. 向项目添加游乐场

      • 点击文件 > 新建 > Playground…
      • 选择 iOS > Blank 模板并将其命名为 Rx.playground
      • 右键单击项目节点并选择“将文件添加到 RxPlayground”。
      • 选择 Rx.playground 并添加它。
    4. 创建工作区

      • 单击文件 > 另存为工作区...
      • 另存为 Rx.xcworkspace
    5. 将框架复制到产品目录。

      • 关闭项目并打开 Rx.xcworkspace
      • 创建跨平台 > 其他 > 聚合。将其命名为 RxAggregate
      • 使用以下内容创建一个新的运行脚本阶段:
    cp -rv "${SRCROOT}/Carthage/Build/iOS/" "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"

    此时,Xcode 和 Finder 看起来像这样:

    注意 Carthage/ 和 Cartfile.resolved 会在你运行 Carthage 时出现,没有它们,你的 Playground 将只有几个 Ks。

    最后,构建项目 (⌘B)。现在您可以在 Playground 中使用该框架了:

    //: Playground - noun: a place where people can play
    import RxSwift
    
    _ = Observable<Void>.empty()
        .subscribe(onCompleted: {
            print("Completed")
        })
    

    有时在您第一次构建 (⌘B) Xcode 时不会注意到新框架(叹气)。我所做的是单击目标并返回源文件,或者重新打开项目。我无法解释为什么会发生这种情况。

    【讨论】:

    • 在复杂度为 -1 之前,请注意这是从头开始逐步进行的,它允许您使用二进制框架而不是添加构建框架的 Xcode 项目。
    • 非常有帮助!谢谢
    【解决方案2】:

    为了让框架在 Playground 中工作,生成框架的项目必须包含在项目的工作区中。因此,要完成这项工作,您需要遵循以下步骤:

    1. 如果您的项目不在工作区中,请通过在 Xcode 中选择 File &gt; Save As Workspace 为您的项目创建一个工作区。
    2. 将 .xcodeproj 文件从 Carthage/Checkouts 文件夹拖到您的工作区中。
    3. 在您的框架目标上运行构建操作。

    【讨论】:

    • 嗯?我需要在操场上支持一些框架,但在项目中不需要:)
    • 这些是您需要采取的步骤才能使其在操场上工作。是否在项目中使用框架取决于您。
    • 我有同样的问题。我做到了。但没有改变。我应该在哪里创建游乐场文件?
    • playground 文件应该在一个 xcode 项目中,该项目也在一个包含您的框架 xcode 项目的工作区中。
    • 谢谢!我明白了。也许我可以自己解决。
    【解决方案3】:

    我通过将构建的框架复制到构建产品目录来解决这个问题,工作区中的 Playgrounds 也会在其中搜索框架。 注意:您还需要运行 lipo 并从 FAT 二进制文件中去除未使用的架构。

    在此处查看更多信息: https://github.com/richardnees/CarthagePlaygrounds

    【讨论】:

      【解决方案4】:

      基于@Jano 的出色回答(感谢),我创建了一个功能齐全的游乐场来与 Carthage 框架进行交互:

      https://github.com/backslash-f/carthage-playground

      我以 Charts 框架为例:

      我使用最新的 Xcode 进行了测试。

      在我的机器上工作。”??

      【讨论】:

      【解决方案5】:

      找到了如何做到这一点,而无需转换为工作区并将 Carthage/Checkouts 文件夹中的 .xcodeproj 文件添加到您的项目中。 如果您有一些包含您想在 Playground 中使用的所有源的框架目标,则此方法有效。该框架必须在您的主要目标的“嵌入式框架”中。

      1. 从 Carthage/Build/IOS 将 Carthage .framework 添加到您的项目中
      2. 将其从项目树中拖放到“Embedded 框架”为您的主要目标
      3. 将 Carthage .framework 添加到您的 框架目标作为可选(在目标成员中)
      4. 添加导入 “您的框架目标” 进入游乐场

      这对我有用

      【讨论】:

        猜你喜欢
        • 2019-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-02
        • 1970-01-01
        • 1970-01-01
        • 2015-06-04
        相关资源
        最近更新 更多