2019年8月5日月曜日

SpriteKit で作成したアプリを Swift3.0 から 4.2 に対応させたときのメモ

概要

久しぶりに SpriteKit アプリを Xcode で開いたら Swift3.0 のサポートが終了しておりビルドできなかったので Swift4.2 にコンバートしビルドできるようにしました
その時のメモです
環境によってエラー内容等、異なるので参考程度に御覧ください

環境

  • macOS 10.14.5
  • Xcode 10.3
  • Swift 3.0 to 4.2

コンパイラのバージョンを 4.2 にする

まず以下のようなエラーが発生しました
SWIFT_VERSION が 3.0 はもうサポートしていないというエラーです

プロジェクトの設定から「Build Settings」で「Swift Language Version」 を 4.2 にしましょう

テストのプロジェクトがある場合はそれらの「Build Settings」も変更しましょう

最終的にはプロジェクト配下で git grep 'SWIFT_VERSION' を実行し 3.0 がなければ OK です

pod update

各種ライブラリが古いと Swift3.0 になっている場合があるのでライブラリをアップデートしましょう

  • pod update

YouTubePlayer のインストール

これはおそらく今回のコンバートとは関係ないと思います
が対応する箇所があったので紹介します

「No such module YouTubePlayer」が出た場合は単純にライブラリを追加すれば OK です

  • vim Podfile
pod 'YouTubePlayer'
  • pod install

インストール後ビルドすると 'UIWebViewNavigationType' has been renamed to 'UIWebView.NavigationType' というエラーが出るのでライブラリを unlock して fix すれば OK です

Realm のフィールドに @objc を付与

これも基本は fix すれば OK です

AVAudioSession のフィールド参照方法を修正

これも Xcode の言う通り fix していけば OK です

  • 'AVAudioSessionCategoryAmbient' has been renamed to 'AVAudioSession.Category.ambient' -> fix
  • 'AVAudioSessionCategorySoloAmbient' has been renamed to 'AVAudioSession.Category.soloAmbient' -> fix

UIApplication のフィールド参照方法を修正

fix で OK です

The Google Mobile Ads SDK was initialized without an application ID

Info.plist に GADIsAdManagerApp -> YES を追加すれば OK です (参考)

最後に

基本は Xcode の指示に従えば文法は修正できます
ライブラリ関連のエラーは unlock するかライブラリ側の修正を待つかプルリクエストを送りましょう
最新のライブラリのドキュメントを読むこともおすすめです

あとはトライアンドエラーで解決していくしかないかなと思います

0 件のコメント:

コメントを投稿