Xcode 8.3 ・ Swift 3.1正式版早速アップデートしました

本日3月28日,Appleの各种OSおよびXcodeの正式アップデートが来たので,早速Xcode 8.3 ・ Swift 3.1にアップデートしてみました。スクショの通り,入れているXcodeは8.3のみで,スッキリです( ´・‿・`)

现在提供新下载–新闻和更新– Apple Developer
获取有关一系列开发,App Store和Mac App Store主题的更新,提示和操作方法信息。 developer.apple.com Mac App Store上的Xcode
阅读评论,比较客户评分,查看屏幕截图,并了解有关Xcode的更多信息。 下载Mac OS X 10.12的Xcode… itunes.apple.com

ついでに,こういう改善もセットでなされました:

Apple App Store Qiのレビューに対して返信できるようになりました🎉– Qiita
ドキュメイトル通りで,详しくはこちらのApple公式ドキュメントに载っています:App Store上的监控评论

Swift 3.1の変更については,少し前の记事ですが,以下にまとめた内容と大差ありません。

Swift 3.1のリリースプロセスおよびそれに含まれる変更内容の绍介(前编)
Build Insiderオピニオン:小野将之(5)。Swift3.1のリリースが2017年春に迫ってきた。版のSwiftを利用する… www.buildinsider.net Swift 3.1のリリースプロセスおよびそれに含まれる変更内容の绍介(后编)
SwiftリポジトリのCHANGELOGとSwift Evolutionリポジトリの提案状态を见ると,Swift 3.1の开発状况が分かる。以下では12月20日时点で最新の开发… www.buildinsider.net

个人的には,こちらのジェネリクスの制限缓和が嬉しいです(・‿・`)

[SR-1009]将方法添加到包含特定类型的数组– Swift
例如,如果我想激活约束内的约束:[NSLayoutConstraint],而不是编写… bugs.swift.org

公式记事も上がっています:

Swift 3.1发布!
Swift 3.1现已正式发布! Swift 3.1是次要发行版,其中包含对… swift.org的改进和改进。

既存プロジェクトのXcode 8.3 ・ Swift 3.1対応

元々,最新のXcode 8.2 ・ Swift 3.0.2などで开発していた场合,コード追従はほとんどせずに対応できるはず(ごくマイナーな破壊的変更は含まれています)で,仆の环境では数行直す程度でビルドが通りました🎉まったく対応不要のケースも多いと思います。

迦太基を使っている偶然は,以下のコマンドなどでライブラリのリビルドも必要です(ABI安定がまだなされていないため)。

 迦太基更新-平台iOS 

场合ルド済みバイナリ配布形式になっているライブラリリの场合, --no-use-binaries no --no-use-binariesオプション指定も必要で,仆の利用しているものでは以下がそれに该当しました。

  • RxSwift
  • 领域可可
  • 钥匙串访问

…と思いきや,Carthage 0.20以上であれば,– --no-use-binariesオプション指定せずとも,Swiftバージョン不合致の时は自动的にビルドして解决してくれるようになっていました👏

迦太基/迦太基
迦太基–一个可可的简单,分散的依赖性管理器 github.com 仅当预编译的二进制文件与scottrhoyt的本地版本的Swift兼容时,才使用…
关闭#1354这是为预建的二进制框架实施Swift版本检查的第一步。 当前… github.com

Facebook SDKで踬いた

これは,上に书いたとおり,コード対応自体は不要ではあったものの,実はfacebook / facebook-ios-sdkを迦太基で取り込んでいたものがビルド通らなくなってしまいました。のでリビルド不要のため,Carthageでの依存を消して以前ビルドしたものを使うことで一旦プロジェクトのビルド自体は通るようになったのですが,后来以下のどれかの対応が必要ですね(・ ‿・`)

  • 未来解决されるのを待つ→【追记】facebook-ios-sdk 4.21.0とXcode 8.3.1の组み合わせでビルド出来ました🎉
  • 迦太基からCocoaPodsに変更
  • facebook / facebook-sdk-swiftに変更

Swift 3.0対応は大変でしたが,その后の3系のアップデートは基本的に破壊的変更なく,3.0にそれらが押し込められて対応大変だった甲斐がありましたね(・‿・`)

CIサービスもBitriseなら安心

Bitrise –移动持续集成和交付
您整个团队的移动持续集成和交付,以及数十种用于您喜欢的服务的集成… bitrise.io

CIサービスは,TravisCI·CircleCIが有名どころですが,仆はBitrise爱用しています。アップデート追従が极极速いので,安心して利用出来ます。

迅捷2.3でしのいでた场合は対応大変

以前から予告されていた通り,Xcode 8.3ではSwift 2.3サポートが切られました。Swift3対応を先延ばしにしていた场合,がんばって対応するかXcode 8.2までをまだ使い続けるしかありません(・‿・` )

Xcode发行说明
描述Xcode中的新功能和已知问题。 developer.apple.com

Xcode 8.3不再支持Swift 2.3。 请通过打开项目并选择“编辑”>“转换”>“转换为当前Swift语法”,将包含Swift 2.3代码的项目迁移到Swift 3语法。

Xcode 8.3が生成するバイナリサイズが大きくなってしまうバグ?

rdar:// 31302382:由于Xcode 8.3增加了4倍,因此生成的二进制文件比Xcode 8.2生成的二进制文件大3倍。
摘要:使用Xcode 8.2编译的Realm Objective-C iOS框架的所有体系结构切片和所有代码块的总重为55MB,… Realm ObjC&Swift 2.5:クエリの改善とSwift 3.1の対応,不具合の修正
クエリの改善とSwift 3.1の対応,および不具合の修正を含むRealm Objective‑C&Swift 2.5をリリースしました。

Xcode 8.3が生成がイナリには非常には大きなビットコードが含まれ,以前のバージョンと比べて4倍以上のサイズになってしまいました

ためのためiOS版のRealm Objective-Cフレームワークは通常の55MBほどのサイズから158MBになってしまいました。そのためObjective-Cフレームワークは引き続きXcode 8.2を利用してビルドすることにしました。

Xcode 8.3。

とのことなので,ちょっと注意ですね。

もちろんRealmライブラリに限らない问题で,人によってはCI周りで困ることも(自分の场合けっこう困りました)。

【追记】Xcode 8.3.1で修正されました

Xcode发行说明
描述Xcode中的新功能和已知问题。 developer.apple.com

修复了一个问题,该问题可能导致产生的应用存档超出必要范围。 Xcode 8.3中内置的应用程序存档的支持将被弃用。 (31302382)

仆もgit lfs使わない以前通りのやり方に戻しました🐶

Fastlaneの対応

以下の変更が必要のようです。

  • use_legacy_build_apiを指定していた场合はカット
  • export_methodを指定

Xcode 8.3上没有此类文件或目录@ rb_sysopen –健身房·问题#8672·fastlane / fastlane
新问题清单将fastlane更新为最新版本我已经阅读了贡献准则问题说明… github.com