NSISEngine tryToOptimizeReturningMutuallyExclusiveConstraints

最近になって、Crashlytics で発生件数が増加してきたエラーぱいせんです。

先月末くらいに発生を確認したのですが、全体の1%以下だったので、まぁ今はいいか〜と思ってたのですが、Crashlytics を見るたびに気になって…ついに成敗することにしました o(・_・)9

発生しているエラー

これが Crashlytics のスクショです。

このエラーをGoogle翻訳にかけると、
メインスレッドからアクセスされた後、バックグラウンドスレッドからレイアウトエンジンへの変更を実行しないでください。
とのこと。
対象のアプリでは、バックグラウンドでデータ処理することもなければ、UI を変更したりすることもないので、完全に「はぁ?」ってなりました。

原因を調べてみる

Crashlytics の他の部分にもちゃんと目を通すことにしました。
そしたら、WebCore やら JavaScriptCore の文字を発見しました。

「…これは…WebKit…!」(前からあった)

アプリ内のコンテンツで WebKit を使うような実装はなかったので、原因は広告(AdMob)だなーと分かりました。
ダガシカシ、ナオシカタ、ワカラン ¯\_( ͠° ͟ʖ °͠ )_/¯

とりあえず「NSISEngine tryToOptimizeReturningMutuallyExclusiveConstraints」でググってみました。

…(´‐ω‐)=з

解決方法見つからず。
成敗できませんでしたーッ!←
ここまで引っ張っておきながら、さーせん。

同じような方々が結構いましたが、共通しているのは、iOS13UIWebView ってことだけ…
分かり次第、この記事を更新したいと思います。

解決方法(追記)

GoogleAdsチームから、解決方法が提示されましたね (°∀°)
要約すると「Info.plist に以下を追加して下さい」とのこと。

UIWebView の代わりに WKWebView を使用するキーのようです。
クラッシュ率がどのくらい下がったのか、まだ計測はしていませんが、公式の解決方法なので、きっと下がるはず。笑

さいごに

WKWebView がリリースされた段階で「UIWebViewは◯年後に完全に使えなくなる」って形にしてほしい。
非推奨だけだと「まだ使える!」ってなって、修正が先延ばしになる会社も多いだろうし…
まぁ非推奨で助かった場面もあるけどさ…w

今回はこれで終わります!
違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )

コメント