【解決済】Xcode9 GMのiOS11シミュレータ上でマップの動作が重くなる

  • 13
    Like
  • 5
    Comment

2017.10.10 更新
Xcode9.1 beta2でfixされました。やったぜ!夕飯はドン勝だ!!!!

2017.09.25 更新
OpenGLES.framework(libCoreVMClient.dylib)をXcode9 Beta3のものに差し替えると改善されるようです。
が、手元にBeta3のデータがないため動作未確認です。スイマセン…

問題

Xcode9 GMでGoogle Maps SDK for iOS、MapKitなどマップSDKを使っているアプリをiOS11シミュレータ上で実行してマップを表示・スクロールすると、CPU使用率が100%以上&FPSが1以下になり動作パフォーマンスが極端に低下する問題が発生しています。

具体的にはマップのレンダリング時にアプリ自体のUIが1~3秒くらいフリーズします。タップして数秒後に反応する感じです。デバッグがしづらくてとてもつらい。
適当なViewControllerにMKMapViewを貼り付けると症状が確認できると思います。

最初この問題が発生した時は使ってるマシンのスペックが低いからなんじゃないかと思っていましたが、調べたところ他にも同様の報告があがっているためそうでもないらしく…
更にはXcode9 beta 4の頃からこの問題が発生している模様。困った。

試したこと

  • 代替レンダリングモードを変更 -> 効果なし
  • Graphics Quality Overrideを変更 -> 効果なし
  • Optimize Rendering for Window Scaleをオフに変更 -> 効果なし

代替レンダリングモードについてはこちらを参考にしました。
iOS 11 Simulator unusable slow

defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint X

Where X is:
0 = auto
1 = Metal
2 = OpenCL
3 = OpenGL

解決策

今のところないようです。
(2017.10.10 更新)
Xcode9.1 beta2でfixされました。アップデートしましょう。

(2017.09.25 更新)
OpenGLES.frameworkをXcode9 Beta3のものに差し替えると改善されるようです。
(Xcode9 Beta3のデータを持っていることが前提条件となります)
他の方が既に記事を書かれていますので、詳しくはそちらを確認していただければ。
Xcode9でiPhoneX/iOS11のシミュレーターが凄まじく重いのをどうにかする

同様の報告がいくつかOpenRadarにあがっており、Apple対応待ちのようです。
今すぐにiOS11の対応をする必要がないのであれば、iOS10以下のシミュレータを使うという手もあります。
また実機での動作の場合はiOS11でも問題ありません。実機で確認するのが一番かなと思います。
ワイヤレスデバッグサイコーですね。

参考ページ

iOS 11 Simulator unusable slow
MapKit in Xcode 9 iOS 11 simulators unusably slow
GoogleMaps on simulator in Xcode 9 uses over 100% of CPU when moving the map
Map is unusably slow in ios 11 beta Xcode 9 simulator