Xcode8.0に更新したらシミュレータでアプリのビルドができなくなった(シミュレータが表示されなくなった)ので、その対処法をメモしておきます。
また、Xcode8.0にすると、プロジェクトを立ち上げた時に、それまで作っていたアプリのソースコードをSwift3.0にconvertするように求められますが、convertせずにアプリをビルドする方法についても解説します。
問題発生の経緯
Xcode8.0にアップグレードしました。
そしたら、今までシミュレータでiPhone4sから6sまで一覧が出てきて、好きなデバイスを指定してアプリをビルドできていたのに、「Generic iOS Device」しか選択できなくなっていました。
この状態で起動しようとしても、以下のメッセージが出てビルドできない。
A build only device cannot be used to run this target.
No supported iOS devices are available. Connect a device to run your application or choose a simulated device as the destination.
「Generic iOS Device」の下にあるAdd Aditional Simulaterを押すと、これまで選択できていた各世代のiPhoneが表示されますが、これをクリックしてもそのデバイス情報が表示されるだけで、これでビルドできるわけではありません。
左下の+ボタンを押しても、機種、OSのバージョンを自分で指定したデバイスがここに表示されるようになるだけで、ビルドに使えるデバイスとして追加されるわけでもない。
解決法
原因はアプリのOSのバージョンがシミュレータのOSのバージョンより新しいものが指定されていたことでした。
アプリ側では、Development Targetが9.1に、シミュレータの方では各iPhoneのiOSは9.0になっていたため、これらのシミュレータが使えなくなっていたのです。
Xcodeを更新したことで、どちらかバージョンが勝手に変わって、このミスマッチが起こったのでしょう。この辺の細かいバージョンはあまり意識してなかったので、どちらが変わったのかはわかりませんが。
対処法としては、アプリ側のDevelopment Targetをシュミュレータ側に合わせる(バージョンを下げる)か、Add Aditional Simulater→Devicesウィンドウ左下の+ボタンを押して、アプリより新しいiOSのシミュレータを新しく作成・追加してやることですね。
せっかくなんで、iOS10のiPhone7を作ってみました。
無事、シミュレータとしてiPhoneが表示されるようになりました。
Swift3.0にconvertせずにアプリをビルドする方法
やっとSimulatorが表示できたと思ってビルドをクリックするとまたもエラーが。
“Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured correctly for targets which use Swift. Use the [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly.
プロジェクト起動時に、Swift3.0へのconvertを促されたにもかかわらず、laterを押して無視したのが原因のようです。
この問題はこちらの記事を参考に解決しました。
Xcode8だけどSwift2.3で実行したい人向け対応 - Qiita
Projectを選択 -> TARGETS -> Build Settings -> Swift Compiler - Version -> Use Legacy Swift Language Version
これをYesにします。
ぼくの場合、ホストアプリの設定だけではエラーは解消されず、ShareExtesion、RealmSwift(を使っていたので、これらに)についても上記設定を行って、やっとビルドに成功しました。
まあ、警告に言われるがまま設定を変更しただけですがw
同じように外部ライブラリなどを使用している方は、そちらの設定変更も必要になってくると思います。
以上、Xcode8.0のSimulator対応についてでした。
あなたにオススメの記事(メインブログの記事です)