Xcode7 升级Xcode8 遇到的问题以及决解方法。
有时候我们从xcode7 升级到Xcode8 会看到到处都是红色的感叹号。我们不知道从何入手怎么办呢。
今天就给你讲解一下如何解决这些问题。
你尝试过处理.xcodeproj 文件的合并冲突(NO)
今天我们讲解的方法是用一个工程文件同时支持xcode7 和xcode8 。
<h4>1.swift </h4>
项目使用的是swift2.3 和最新的swift 版本不兼容 ,设置SWIFT_VERSION如下图
<h4>2 Framework provisioning</h4>
Framework provisioning 的工作方式在Xcode 8 上稍有不同 —— 如果是模拟器,它们会按原样继续编译,而对于真机会构建失败。
要解决这个问题,可以像设置SWIFT_VERSION 时所做的一样,遍历 Build Settings 中所有的 Framework targets 并增加如下选项:
“PROVISIONING_PROFILE_SPECIFIER”= “ABCDEFGHIJ/“ 如下图
无标题.png
<h4>3你的项目中使用了 xib和storyboard 文件 </h4>
(xcode的不兼容)然后找到 “Opens in“ 设置项。
显示的内容很可能是 “Default (7.0)“,将它修改为"Xcode7"
无标题.png
<h4>4某些方法确实无法处理</h4>
考虑到你可能会忽略这一点, Swift 2.2 就引入了编译预处理宏。用法很简单:
<pre>
if swift(>=2.3)
// this compiles on Xcode 8 / Swift 2.3 / iOS 10
else
// this compiles on Xcode 7 / Swift 2.2 / iOS 9
endif
</pre>
<h4>5转换Convert</h5>
(例如将swift 2.3 移植成 是swift3.0)需要确保你的所有的pods项目的依赖都已经是swift3.0
找到 Edit → Convert →To Current Swift Syntax…,选择所有的构建目标(记住,你需要一次全部转换好),review 一下diff,测试,然后提交!如果你尚未完成这些步骤,不妨考虑移除对iOS 8 的支持——这样一来你就可以告别更多的@available 检查和其他的条件语句。祝好运!
<h4>6. cocoapods 问题</h4>
最头疼的问题cocoapods里面项目依赖好多一片红啊。别急。如果你正在使用CocoaPods,你同样也需要更新Pods 项目的设置,以保证其Swift 和provisioning 的设置是正确的。 Pods target的设置我们可以在podfile文件中添加依赖设置
<pre>
post_install do |installer| installer.pods_project.build_configurations.each do |config| # Configure Pod targets for Xcode 8compatibility config.build_settings['SWIFT_VERSION']= '2.3' config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] ='ABCDEFGHIJ/' config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] ='NO' endend
</pre>
同样,记得把 ABCDEFGHIJ 替换成你的团队ID。然后运行 pod install 来重新生成Pods 项目。
<h4>7. cocoapods 问题</h4>
KbUMi.png
<pods(targets)-- 找到依赖工程部分-build setting -packaging - info.plist files - 设置相对路径>
120D04F3-9352-4DF5-86D0-61015B20C3B1.png
<h4>8. base SDK </h4>
确保选择 lastestiOS 他会根据xcode的变化自己变化iOS的系统环境。
无标题.png
<h4>最后可能遇到的问题以及解决办法</h4>
无标题.png无标题.png