我正在尝试用一个既有iOS又有OSX目标的遗留项目来设置CocoaPods。
如果在Podfile的顶部指定:
platform :osx, '10.9'
例如,指定一个类似于CorePlot的pod:
pod 'CorePlot'
然后,在pod update
之后,我在我的Pod目录中看到了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,或者有办法做到这一点吗?
非常感谢,
Levi
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
发布于 2016-02-16 18:15:11
基于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
发布于 2021-04-15 03:43:15
您可以使用abstract_target
s按平台分隔pods:
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
https://stackoverflow.com/questions/23023095
复制相似问题