anz blog

Xcode 16.2 と iOS 18 Simulator でパスワード自動入力(管理)周りの挙動がおかしい?

2025-01-08 #Xcode

2025年 あけましておめでとうございます。
昨年はさーすがにブログ放置しすぎた感が強いので今年はもう少し何かしら書いていきたいですね。
ってことで一発目です。
初手から変なバグ(?)踏んだ話で幸先わるいか?(笑)

詳細

いままで Xcode 15 ベースで開発をしていたのですが、流石にそろそろ Xcode 16 に上げよう(Swift 6 対応はゆっくり進める感じで)ということでバージョンを上げて動作の確認をしていたところ、ログイン後にアプリがフリーズするという現象に遭遇しました。
もう少し具体的にその現象をかくと...

  • どこをタップしても反応しないから操作できないだけでクラッシュではなさそう
  • CPU使用率が爆上がりしてることもない
  • アプリをバックグラウンドにまわして復帰すると操作できるようになる
  • iOS 17以下 Simulator では問題ない
  • 実機でも問題ない
  • IDとパスワードを入力だけしてログインせずにログイン画面を閉じても発生する(どちらか片方入力しただけでは問題ない)

という感じです。
クラッシュするとログなりレポートなりから情報が得られてそこを足がかりに調査できたりするのですが、今回はそういうものもないのであれこれやっても進展がなく詰みかけていました。

原因のようなもの

iOS 18.x のSimulatorのみだし無視する形で諦めかけていたのですが、ログイン後にパスワードをキーチェーンに保存(更新)するか訊ねてくるシートが表示されないな?ということに気づいて以下のように推測しました。

  • 何らかの原因でシートがうまく表示されずに透明なVCだけかが覆っている状態だからどこをタップしても操作できないのでは?
  • アプリをバックグラウンドに回すと自然にそれが閉じられるので復帰時には操作できるようになるのでは?

この推測をもとにデバイスの設定からパスワードの自動入力という機能を無効化したところ、無事にログイン後にフリーズすることなく操作できるようになりました。
ということで今回の原因は自分の中では「Xcode 16 で iOS 18 Simulator だとパスワードの自動入力(管理)周りがバグっている」ということに結論づけています。
なので一旦は Simulator のパスワード自動入力周りの設定を無効化して開発を進めています。
(障りがないかといわれるとんなことはないのだけれど...)

更に踏み込んだ調査

この Xcode 16 と iOS 18 Simulator という組み合わせには特定の条件下で問題があるということはこちらの記事を読んでいて知っていたし、こちらのプロジェクトも同条件下なので記憶にしっかりとどめていたこともあって、上記のような推測や結論にすんなり至ることができたかと思っています。
それで、この記事で言及されているとおりこちらも arm64 の設定が問題なのでは?と気になったので、 簡易的に擬似的なログイン画面を作って検証してみたところ、やはりフリーズさせることに成功しました。
フリーズさせないためには先述したとおり「パスワード自動入力機能を無効にする」か「Excluded ArchitecturesAny iOS Simulator SDK から arm64 の設定を外す」のいずれかをやれば解消できることを確認しました。

ただあくまでも擬似的なログイン画面で検証(パスワードをキーチェーンに保存するかというシートの呼び出しまではやっておらず、パスワードの自動入力機能を呼び出しただけ)したので、実際のアプリとは差異があるので確定はできないのですが、それでも何かしら関連はあるでしょうし実際問題もありそうというところです。

...外部ライブラリの制約で arm64 設定を外せる見込みが全然たたないところが今回の問題を経てつらみが更に増しましたね。
他にも障りがあるのでいい加減外したいしその issue も随分前から立てているのですけれど...

参考