Edited at

Xcode9でiPhoneX/iOS11のシミュレーターが凄まじく重いのをどうにかする

More than 1 year has passed since last update.

このバグは既にXcode9.1 beta2でfixされています (2017/10/18追記)


はじめに

iOS11のリリースに加え、先日のイベントでiPhoneXとかいう変態仕様端末が発表されたために、デザイナー・エンジニア界隈は対応に追われているかと思います。

まだ実機が出回ってないため、UI周りの確認などはXcode9GM版以降のシミュレーターで調整をするしか無いと思うのですが、Xcode9内臓のiPhoneXシミュレーターを使おうとすると尋常じゃない重さでとてもやってられません。(というかiOS11だとだめっぽいので、iPhone8でも同様かと思います)

特に描画処理の多いゲーム系のアプリケーションだと頭がおかしくなりそうなくらい重いです。

Xcode9beta4の辺りからMapViewでも起きてたバグらしくOpenGLESが原因らしいです。

https://forums.developer.apple.com/thread/83570


対処

Xcode9.1 beta2でfixされたため、基本的にはXcode9.1 beta2にアップデートするのが良いです。

どうしてもXcode9.0系でなければいけない複雑な事情がある場合は以下の対処を行ってください。

 

https://twitter.com/i/web/status/910203896332783616

このツイートを試したら解消しました。@stroughtonsmithさんありがとう🙇

要するにXcode9で使われているOpenGLES.frameworkをXcode9beta3以前のものに取り替えてあげるとかなり軽くなります。(コメントで指摘いただきましたが、Xcode8.3.3でも問題ないようです。なので8系でも大丈夫?)

beta2以前やXcode8系のものに差し替えた場合どうなるかは未確認です。

念のためもともとのOpenGLES.Framesworkは保存しておくのが良いかと思います。

cp Xcode9_beta3.app/Contents/Developer/Platforms/iPhoneOS.platforms/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/OpenGLES.framework Xcode9.app/Contents/Developer/Platforms/iPhoneOS.platforms/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/OpenGLES.framework

Apple公式フォーラムでも出ている話題なので次のXcodeのリリースでは修正されていると思いたいですね…

こういった事があるので、過去のバージョンのXcodeもどこかに保存しておくようにしたほうがいいのかなー、と思いました。

恒例の新iOSリリースの際のバグ祭りですが、今回は一段とひどいような気がします😔