2016年10月5日水曜日

Xcode8 のエラーを解消してビルドできるようにした

概要

Elcaptain で Xcode8 にアップデートしました
案の定既存のプロジェクトがエラーだらけになったのでとりあえずエラーを解消させてビルドできるまで対応してみました
ライブラリ管理は Cocoapod だけ使っています

環境

  • Mac OS X 10.11.6
  • Xcode 7.3.1 -> Xcode 8.0 (8A218a)
  • Cocoapod 1.0.1

やったこと

コードに関して

1 - プロジェクトを選択 -> Target -> プロジェクト名 -> Build Settings -> Use Legacy Swift Language Version -> Yes

2 - Edit -> Convert -> To Current Swift Syntax -> Convert to Swift 2.3 を選択する

Xcode 起動時にもコンバートするかどうか聞かれるので、そこで Later -> Later と選択していれば上記は実施する必要なし

3 - Podfile の編集

Podfile の最後に以下を追記する

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

追記したら再度 pod install し Xcode を開き直す

4 - Module file was created by an older version of the compiler

上記のエラーが発生したので Cmd + Alt + Shift + k でクリーンしsた

5 - NSBluetoothPeripheralUsageDescription について Info.plist について追記

Xcode8 でビルドして iTunesConnect にバイナリをアップロードしたら以下の警告がメールで来て弾かれた

This app attempts to access privacy-sensitive data without a usage description. 
The app's Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string value 
explaining to the user how the app uses this data.

どうやら Info.plist に以下を追記する必要があるらしい

Key -> NSBluetoothPeripheralUsageDescription
Value -> Advertisement would like to use bluetooth.

他にも Admob を使っている場合やカレンダーにアクセスする場合などいろいろなケースで説明が必要になるらしい
http://dev.classmethod.jp/smartphone/iphone/ios10-privacy-data-purpose-description/

Storyboard

Storyboard のベースデバイスを iPhone6s にする
すべての ViewController に対して Update Frames を掛ける必要がある

最後に

上記の内容だけ実施すれば自分のプロジェクトはとりあえずビルドできるようになりました
結局 Swift は 3.0 ではなく 2.3 を使っています
ライブラリが順次 3.0 に対応してきたら本体も 3.0 に上げる感じでしょうか
コードコンバートは自動で行ってくれるはずなので、そこまで大変な感じにならないといいのですが、、、

参考サイト

0 件のコメント:

コメントを投稿