如何在Podfile Xcode 9.0 Swift 3.2/Swift 4.0中为每个Pod设置Legacy Swift版本

Tal*_*ion 36 cocoapods swift podfile

我目前设置遗留在PodfileSWIFT_VERSION = 2.3,但有些我使用的库都雨燕3.0,这意味着我需要手动设置遗留的所有Swift 3.0吊舱遗留给No每个pod install.如何在Podfile安装程序中配置每个pod版本?

这就是我设置的内容:

post_install do |installer|
 installer.pods_project.targets.each do |target|
     target.build_configurations.each do |config|
         config.build_settings['SWIFT_VERSION'] = '2.3'
     end
 end
end
Run Code Online (Sandbox Code Playgroud)

如果我设置config.build_settings['SWIFT_VERSION'] = '3.0',比我们有Swift 2.3pods的问题.最好的解决方案是,如果我们单独设置每个pod旧版本,以避免必须手动设置它.

Jus*_*ler 97

我在搜索如何将XIFT 9的SWIFT_VERSION设置为3.2时找到了这个.

使用AirMapSDK本身和多个依赖项需要3.2而不是4.0以下是如何为可能遇到此问题的其他人设置pod特定SWIFT_VERSION的示例.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if ['AirMapSDK', 'PhoneNumberKit', 'Lock', 'RxSwift', 'RxSwiftExt', 'RxCocoa', 'RxDataSources', 'ProtocolBuffers-Swift'].include? target.name
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '3.2'
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

您可以更改if数组以指定设置版本所需的任何pod.

  • 这是在podfile中使用的 (2认同)

Edm*_*Lee 7

如果需要管理Pod的多个Swift版本,则可以构建映射。

DEFAULT_SWIFT_VERSION = '4'
POD_SWIFT_VERSION_MAP = {
  'Dotzu' => '3'
}

post_install do |installer|
  installer.pods_project.targets.each do |target|
    swift_version = POD_SWIFT_VERSION_MAP[target.name] || DEFAULT_SWIFT_VERSION
    puts "Setting #{target.name} Swift version to #{swift_version}"
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = swift_version
    end
  end
end
Run Code Online (Sandbox Code Playgroud)