我正在尝试使用包含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
答案 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