是否可以通过podfile为单个目标添加多个平台支持?
例如,我的项目在iOS和Mac上都是通用的。它们使用相同的代码库。因此,我没有为同一代码创建多个目标,而是在同一目标中添加了对iOS和MacOSX的支持。一切正常。
现在,我想通过Cocoapods添加一个依赖项。我创建一个podfile并指定目标对pod的依赖。这里讨论的Pod以类似的方式支持多个平台,即单个目标。
但是现在在构建我的项目时,它在iOS上失败。
在Podfile中为单个目标指定多个平台会产生错误。
如果我仅将平台指定为iOS或Mac,则该项目无法在其他平台上构建。
有人曾经历过吗? 如何通过podfile为单个目标添加多个平台?
P.S。 -我知道我可以通过在项目中创建多个目标来实现这一目标。但我想保留它作为最后的选择。
答案 0 :(得分:3)
def import_pods
pod 'CorePlot'
end
target 'FirstAppWithMacOS' do
# define your platform here.
platform :ios, '9.0'
import_pods
end
target 'FirstMacOSApp' do
# define your platform here.
platform :osx, '10.10'
import_pods
end
请参见下面的项目图片:
答案 1 :(得分:0)
平台设备由目标的Base SDK
的{{1}}部分中的Supported Platforms
和Architectures
控制。如果您没有为macOS和iOS设备创建分离的两个目标,则应该只剩下一个选择来支持这些平台条目,即,为macOS平台复制两个新的现有构建配置,那么您可以配置设置。
例如,您有一个现有的基于iOS的项目,并且有两个名为Build Settings
和Debug
的默认构建配置。现在尝试为macOS新建两个,选择主Xcode项目->选择项目名称(此处不是目标名称)->选择信息顶部部分->点击Release
部分下的+
按钮->选择Configurations
->将其重命名为Duplicate "Debug"/"Release" Configuration
/ Debug-macOS
或其他名称,将其重命名也从Release-macOS
/ Debug
到Release
/ Debug-iOS
。
现在,您只有两对配置,可以在一个目标的构建设置下调试和归档目标平台。您还可以为macOS开发创建新方案,只需确保以不同的操作选择正确的配置即可。
与Release-iOS
上的主要Podfile
对话,如果您自己维护一个cocoapods库,并且希望将其添加为依赖项,则最好在{中同时支持macOS和iOS平台{1}}文件,当然,您需要与这些平台兼容,AFNetworking就是这样做的。这是主要的转换任务,对于macOS平台,请勿在{{1}}下使用任何API。要区分平台在编译时间上的差异,可以为此使用这些宏,
cocoapods
如果您想在独立项目目标中使用第三方库,请首先检查兼容问题,如果它仅适用于iOS平台,则可以仅为一个平台指定依赖库,
podspec
与macOS支持相同。
希望有帮助!
答案 2 :(得分:-2)
在我的一个有3个目标的项目中,我执行了相同的实现。 我已经创建了“ def”共享吊舱,然后在所有3个目标中都调用了shared_pods。这样,它工作得很好。我只为iOS应用程序做过。
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
def shared_pods
pod 'Stripe'
pod 'Google/SignIn'
end
target 'App_Dev' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
shared_pods
end
target 'App_QA' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
shared_pods
end
target 'App_Release' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
shared_pods
end