sol*_*ell 14 xcode frameworks ios cocoapods swift
比方说MyPod
,我正在创建一个CocoaPod,这取决于另一个Cocoapod RxSwift
.
所以我有这个MyPod.podspec
:
s.dependency "RxSwift", "~> 3.0.1"
Run Code Online (Sandbox Code Playgroud)
但是,在开发时MyPod
,我如何实际使用依赖?
import RxSwift
// ^
// No such module 'RxSwift'
public class MyClass { //...
Run Code Online (Sandbox Code Playgroud)
我缺少一个步骤,还是一些常见的约定?看起来像Moya这样的其他项目正在使用Carthage在开发过程中构建依赖项.我应该这样做,还是可以添加一个Podfile
?
我知道这对于位于repo中的示例应用程序来说应该不是问题,它应该有自己的Podfile
.但是,我仍然希望测试位于示例应用程序之外的顶层,并且能够在处理它时实际构建框架,同样,在示例应用程序之外.
Eri*_*ken 11
我不能谈论是否使用CocoaPods或Carthage.两者都有其优点和缺点.另外,应该考虑许多因素,其中一些因素可能无法控制(比如坚持使用CocoaPods的客户端!)所以我会跳过那部分.
但是,对于您的问题,您正在开发的吊舱确实可以依赖于另一个吊舱.你已经有了正确的s.dependency
路线.这是必要的.
但是,我怀疑您无法引用依赖pod的原因可能是因为您的'tester/example'项目中没有Podfile和/或您pod install
在Podspec中添加依赖项后没有执行.
这样做的原因是我怀疑是因为Podspec实际上并没有被Xcode处理,所以你实际上并没有下载(或编译)依赖项.
相反,当您进行pod安装(当然是通过命令行)时,CocoaPods将使用您的开发窗格,您依赖的窗格(在Podspec中)以及Podfile中的任何其他窗格创建一个Pods项目.
为了验证这个理论,我:
s.dependency 'RxSwift', '~> 3.0.1'
.pod install
在示例应用程序的文件夹中.import RxSwift
一行.PureLayout
.)你可以查看我在我的公共GitHub上创建的演示:https: //github.com/ericwastaken/CocoaPod-Dependency-Demo
老实说,我已经使用pod lib create
它创建了几个pod ,它确实创建了一个总是适合我的漂亮结构.出于这个原因,我建议始终使用它来创建pod的骨架.
Xcode 8评论:pod lib create
似乎仍然创建了一个Swift 1.x项目.因此,在您使用此工具后,当您打开Xcode时,您将被提示"转换"为更新版本的Swift.我会让那个转换发生在那时(第一次),这样你就可以使用Swift 2.x或3.x语法(你选择).
我最终使用 Carthage 来构建框架依赖项。我想我也可以使用 CocoaPods 来做到这一点。但是,这需要我开始使用工作区,但我不想这样做,以便尽可能减少更改。
另外,对于 Carthage,它不需要我添加新的Podfile
/ Podfile.lock
,因为 Carthage 将使用已经存在的现有Cartfile
/ Cartfile.resolved
。这是因为 CarthageCartfile.resolved
在另一个项目中使用该框架以及自己构建框架时都使用了 。然而,对于 CocoaPods,*.podspec
在另一个项目中使用框架时使用,但 Podfile.lock
(如果您添加了Podfile
)需要在框架本身中安装依赖的 pod。
归档时间: |
|
查看次数: |
2815 次 |
最近记录: |