我有一个快速的项目,通过carthage添加了一些框架。是否可以在项目内的游乐场中使用这些框架以及如何使用它,因为
import Argo
不起作用:(
答案 0 :(得分:17)
这在某个时候停止了工作。叹息
我现在所做的是
github "ReactiveX/RxSwift"
创建一个Cartfile并运行carthage update --platform iOS
此时我可以运行操场文件。
♂️
如果操场是构建配置为访问这些框架的目标的工作空间的一部分,则操场可以访问外部框架。
如果您想将游乐场添加到现有的carthage项目中,您只需要将项目保存为工作区(文件>另存为工作区...),构建目标,然后就完成了。
如果您只想分发带有第三方框架的游乐场,则需要创建一个虚拟工作区。以下是具有RxSwift框架的游乐场的分步示例:
创建跨平台类型的新Xcode项目>其他>空。将其命名为RxPlayground。
这将创建这个结构RxPlayground / RxPlayground.xcodeproj并打开一个空白的Xcode。
使用迦太基下载RxSwift
github "ReactiveX/RxSwift" "swift4.0"
carthage update --platform iOS
运行迦太基。 为项目添加游乐场。
创建工作区
将框架复制到产品目录。
cp -rv "${SRCROOT}/Carthage/Build/iOS/" "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
此时,Xcode和Finder看起来像这样:
请注意,当您运行Carthage时会出现Carthage /和Cartfile.resolved,如果没有它们,您的游乐场将只有几Ks。
最后,构建项目(⌘B)。现在您可以在游乐场中使用该框架:
//: Playground - noun: a place where people can play
import RxSwift
_ = Observable<Void>.empty()
.subscribe(onCompleted: {
print("Completed")
})
有时第一次构建(⌘B)Xcode时没有注意到新框架(叹息)。我所做的是点击目标并返回源文件,或重新打开项目。我没有解释为什么会这样。
答案 1 :(得分:6)
为了使框架在游乐场内工作,生成框架的项目必须包含在项目的工作区中。因此,为了完成这项工作,您需要按照以下步骤操作:
File > Save As Workspace
为项目创建工作区。Carthage/Checkouts
文件夹拖到工作区中。答案 2 :(得分:3)
我通过将构建的框架复制到Built Products Directory来解决它,其中工作区中的Playgrounds也搜索框架。 注意:您还需要运行lipo并从FAT二进制文件中删除未使用的体系结构。
在此处查看更多信息: https://github.com/richardnees/CarthagePlaygrounds
答案 3 :(得分:3)
基于@Jano的出色回答(感谢),我创建了一个功能齐全的游乐场以与Carthage框架进行交互:
https://github.com/backslash-f/carthage-playground
我以图表框架为例:
我用最新的Xcode测试过。
“ 在我的计算机上工作。”
答案 4 :(得分:0)
找到了如何执行此操作而不转换到工作空间并将Carxage / Checkouts文件夹中的.xcodeproj文件添加到项目中的方法。 如果您有一些框架目标,该目标包含要在操场上使用的所有源,则此方法有效。该框架必须位于主要目标的“嵌入式框架”中。
对我有用