今天的主角就是开发者接触最多的 Xcode 10 beta,详细内容可以参考 WWDC 18 Session ,同时可以看下 Xcode 10 的 release note, 官方文档永远是学习新内容的第一手资料。
Xcode 10 beta 在 WWDC 18后就对开发者开放下载了,WWDC 18的新内容不多,Apple 今年把主要精力放在 Bugfix和性能优化上面,还这几年欠下来的技术债,关于 iOS 11的诟病一直不绝入耳,不得不说,Apple 今年的决策还是比较明智的。
我们项目现在是 OC 和 Swift 混编,Xcode 版本是9.4.1,swift 4,平时用公司的 iMac Late 2013编译感觉有点吃力,用自己的 MBP 14则编译速度足够去喝杯咖啡,享受人生。
我尝试把自己的主力机(iPhone 7)升级到 iOS 12后,内心抑制不住冲动把14年的 iPhone 6也升级下 iOS 12试试,重新体会到了之前 iOS 的那种流畅,真的是老泪纵横。平时 iPhone 6只能沦为测试手机,跑跑单元测试啥的。
升级了 iOS 12后,Xcode 9已经不能进行调试了,本着生命不息,折腾不止的精神,顺带体验了一下 Xcode 10的各种新功能,总结了一下升级 Xcode 10过程中踩的坑。
Xcode 10 beta 版本迁移指南:
指定 swift版本:4.1,Xcode 10使用的是 swift 4.2版本,而 Xcode 9.4则使用 Swift 4.1,基本改动不大,为了兼容 Xcode 9,这里统一使用 Swift 4.1。
podfile设置如下:
config.build_settings['SWIFT_VERSION'] = '4.1'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- xcode 项目设置:
- **SWIFT_VERSION**为 swift 4
- xcode command tool设置: 使用 Xcode 10
- sudo xcode-select --switch /Applications/Xcode-beta.app
- xcodebuild -version可以查看
- ```
- Xcode 10.0
- Build version 10L176w
更新部分 pod 库:
- RACObjcBridge/RACObjc升级到3.1.0,之前是3.0.0版本,swift 版本导致需要升级。
- 删除 Tencent SDK pod spec 中的s.resource_bundle字段,参见 xcode 10 beta release note。多个相同的输入文件导致冲突,这个也是 xcode 10新增的功能,为了加快编译速度,对编译依赖检测得很严格。
- 使用 Carthage 的话,则需要指定手动指定 Swift 版本:
- carthage update –platform iOS –toolchain com.apple.dt.toolchain.Swift_4_1 –no-use-binaries REPO_NAME
更新 swift lint: disable identifier_name
其他错误:
整个升级过程中,需要注意的几点:
- 及时清理 DerivedData目录,由于整个编译过程中会产生众多的中间文件,非常容易导致编译依赖检测出错。
- 更新 carthage framework和使用 pod install 重新编译第三方库。
- New Build System: Xcode 9.4引入了 preview 版本,Xcode 10则是默认开启,开启后,编译速度确认有所提升,但是也会导致一些比较奇怪的编译问题,上面只是记录了笔者遇到的几个问题。
- 完成升级后,Xcode 9.4和 Xcode 10 beta 可以共存,笔者使用 Xcode 10 beta,其他开发同事继续使用 Xcode 9。