支持iOS和OSX的Podfile

时间:2014-04-11 21:42:50

标签: ios macos cocoapods

我正在尝试使用包含iOS和OSX目标的旧项目来设置CocoaPods。

如果,在我的Podfile的顶部,我指定:

platform :osx, '10.9'

并且,例如,指定像CorePlot这样的pod:

pod 'CorePlot'

然后,在pod update之后,我在Pods目录中看到了Mac特定的来源:

Pods/CorePlot/framework/MacOnly

这没关系,除非我要将:ios指定为platform,否则我会看到:

Pods/CorePlot/framework/iPhoneOnly

看到MacOnly目录。

CorePlot的podspec根据平台指定这些目录,这就是为什么它们根据我选择的平台显示的不同。但是,我希望能够让我的Podfile适用于我的iOS和OSX目标。

我继续想,或许我可以根据项目中的目标指定平台,并省略顶级平台声明:

target "OSX" do
  platform :osx, '10.9'
end

target "iOS" do
  platform :ios, '7.0'
end

但是,一旦我再次执行pod update,我就会遇到版本兼容性错误:

  

[!]目标Pods(OS X)的平台与最低要求为iOS 3.1.3 - OS X 10.5的CorePlot (1.5.1)不兼容。“

这似乎表明CocoaPods无法识别目标块中的版本信息。

而且,如果我将平台添加到顶级,除了目标特定平台之外,我只获得顶级平台所指示的任何平台的代码。

我被迫有两个独立的项目吗?一个用于iOS,一个用于Mac OS X,或者有办法实现此目的吗?

非常感谢,

列维

   CocoaPods : 0.31.1
        Ruby : ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
    RubyGems : 2.0.3
        Host : Mac OS X 10.9.2 (13C64)
       Xcode : 5.1.1 (5B1008)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib Repositories : master - https://github.com/CocoaPods/Specs.git @ bf6ff4b23c2e8b9e5fe5840eddfc3bad122eb932

2 个答案:

答案 0 :(得分:6)

基于https://github.com/CocoaPods/CocoaPods/issues/2043#issuecomment-59295308

def import_pods
    pod 'CorePlot'
end

target :ios do
    platform :ios, '7.0'
    import_pods
end

target :osx do
    platform :osx, '10.9'
    import_pods
end

答案 1 :(得分:0)

您可以使用 abstract_target 来按平台分隔 Pod:

use_frameworks!

# Common pods
pod ...

abstract_target 'Mobile' do
  
  platform :ios, '13.0'
  
  # Common pods for mobile
  pod ...
  
  target 'My iOS App' do
    
    # Target specific pods
    pod ...
    
  end
  
end

abstract_target 'Mac' do
  
  platform :osx, '11.0'

  # Common Mac pods
  pod ...
  
  target 'My Mac App' do

  # Target specific pods
    
  end
  
end