将使用 Cocoapods 1.0.1 的 iOS 应用程序从 Swift 2.2 迁移到 3.0

Posted

技术标签:

【中文标题】将使用 Cocoapods 1.0.1 的 iOS 应用程序从 Swift 2.2 迁移到 3.0【英文标题】:Migrating an iOS application using Cocoapods 1.0.1 from Swift 2.2 to 3.0 【发布时间】:2016-09-28 20:42:32 【问题描述】:

我目前正在将 ios 应用从 Swift 2.2 升级到 3.0。我已将我所有的 pod 依赖项指向他们的 Swift 3 版本,并迁移了我的代码。但是,当我运行pod install 并尝试打开我的工作区时,Xcode 仍然希望我将“Pods”项目转换为最新的 Swift 语法:

“Pods”项目的目标包含使用早期版本的 Swift 开发的源代码。

但我已经将我的依赖项升级到他们的 Swift 3.0 版本。什么给了?

(这是一个规范的问答对,以帮助遇到此问题的未来用户)

【问题讨论】:

【参考方案1】:

我在使用 Cocoapods 1.0.1 时遇到了这个问题,我需要手动将已安装目标的 SWIFT_VERSION 指定为 3.0:

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

我的完整 Podfile(用于测试/开发 pod):

source 'https://github.com/CocoaPods/Specs.git'

use_frameworks!

target 'MyApp' do
  pod "MyPod", :path => "../"
end

target 'MyApp_Tests' do
  pod "MyPod", :path => "../"  
end

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

Issue #5521 - Compiler Version for Xcode 8 帮助找到了这个解决方法。

【讨论】:

@JonShier 我是否必须订阅特定的 beta 频道才能获得候选发布版本?我没有看到普通的“pod update.【参考方案2】:

我建议使用他们的候选发布版本

sudo gem install cocoapods --pre

然后再次安装 pod

【讨论】:

对,但如果您所在的团队不支持 Cocoapods 的预发布和发布候选版本(并且停留在 1.0.1),那么这不是一个可行的解决方案。 改用 Swift 包管理器?

以上是关于将使用 Cocoapods 1.0.1 的 iOS 应用程序从 Swift 2.2 迁移到 3.0的主要内容,如果未能解决你的问题,请参考以下文章

ADAL iOS 与 CocoaPods v0.38 使用 Swift 没有桥接头

如何使用 CocoaPods 将智能生活 App SDK iOS 版快速集成到项目中

手把手教学:在iOS 8中使用Cocoapods

iOS之深入解析Cocoapods的工作原理与源码分析

iOS之深入解析Cocoapods的工作原理与源码分析

Xamarin.iOS CocoaPods基本使用