为CocoaPods的pod

时间:2016-05-11 11:03:01

标签: ios xcode xcode7 cocoapods

我使用CocoaPods来管理项目中的依赖项。我写了Podfile:

target 'MyApp' do
  platform :ios, '8.0'
  # Uncomment this line if you're using Swift or would like to use dynamic frameworks
  #use_frameworks!

  # Pods for MyApp
  pod 'KeepLayout', :git => 'https://github.com/iMartinKiss/KeepLayout', :tag => 'v1.6.0'
  pod 'EasyMapping'

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

这个文件适用于CocoaPods 0.x但是在我更新到CocoaPods 1.0后我无法编译项目。我跑完后

pod update 

我无法使用错误编译我的项目:

  

/ Users /< ...> /Pods/KeepLayout/Sources/KeepAttribute.m:195:1:无法合成弱属性,因为当前部署目标不支持弱引用

我已经看到每个库都使用不同的部署目标进行构建。例如,使用4.3部署目标构建了KeepLayout。

如何确定每个pod依赖项的构建目标?

4 个答案:

答案 0 :(得分:78)

虽然CocoaPods的一些开发版本(以及1.0之前的版本)可能已将项目的部署目标传播到pod,但这是no longer the case in 1.0。要解决此问题,the current developer recommends使用安装后挂钩。

这是一种强制方法,用于强制生成的Pods项目中每个pod的硬编码部署目标。将其粘贴到Podfile 结束

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.2'
    end
  end
end

答案 1 :(得分:10)

由于“项目” 项目已设置了部署目标,因此您只需删除每个构建目标的部署目标。在您的Podfile

end 上附加此内容
post_install do |lib|
    lib.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
        end
    end
end

受到github post和Alex Nauda的回答的启发。

答案 2 :(得分:1)

1)搜索IPHONEOS_DEPLOYMENT_TARGET

2)更改iOS部署目标

enter image description here

答案 3 :(得分:0)

将目标更改为“11.0”

platform :ios, '11.0'