podspec依赖项和Podfile pod声明之间的区别

God*_*her 9 ios cocoapods podspec

我有一个cocoapod的项目(我们称之为"Main"),它与另一个cocoapod有一个依赖关系(我们称之为"Util").

我可以通过"pod'Util'"在Main的Podfile中添加Util,并通过"s.dependency'Util'"将其指定为podspec中的依赖项.

只要至少写入其中一个,我的pod测试项目运行正常(如果没有podspec中的依赖项,运行"pod lib lint"命令会返回错误)

在Podfile中指定pod可以让我更精确地了解我希望版本的准确程度,甚至允许我使用:head作为目标.但是,依赖性似乎更加有限,需要标签.

我想知道这两种方法之间的区别,以及当一个pod依赖于另一个pod时是否有好的做法(特别是因为我最终想要将Main用作其他项目的pod)

BFe*_*her -1

如果我理解正确的话,你两者都需要。

您将UtilPodfile放在Main中以便它可以使用它并编译。

您将Util.podspec放在Main中这样任何安装Main的人都会自动获得UtilMain

另外,本文可能对您有用,因为它展示了如何通过subspec.

您可以制作包含不同依赖项的 pod 的多个版本。例如,文章中的以下内容.podspec

...
spec.default_subspec = 'Lite'

spec.subspec 'Lite' do |lite|
    # subspec for users who don't want the third party PayPal 
    # & Stripe bloat
end

spec.subspec 'PayPal' do |paypal|
    paypal.xcconfig =  
        { 'OTHER_CFLAGS' => '$(inherited) -DKITE_OFFER_PAYPAL' }
    paypal.dependency   'PayPal-iOS-SDK', '~> 2.4.2'
end

spec.subspec 'ApplePay' do |apple|
    apple.xcconfig =   
        { 'OTHER_CFLAGS' => '$(inherited) -DKITE_OFFER_APPLE_PAY' }
    apple.dependency      'Stripe', '2.2.0'
    apple.dependency      'Stripe/ApplePay'
end
Run Code Online (Sandbox Code Playgroud)

允许以下 3 个 pod:

pod "Kite-Print-SDK", "~> 1.0"
pod "Kite-Print-SDK/PayPal", "~> 1.0"
pod "Kite-Print-SDK/ApplePay", "~> 1.0"
Run Code Online (Sandbox Code Playgroud)