実機特有バグで Loding 状態でゲーム進行が停止した場合、現状は手がかりが掴めない。だから掴めるようにする
Description
Loding 状態から処理が進まないまま、何かしらログ出力する方法を見出す。
Comments (4)
feature/INS-765-stuck-loading-diagnostics として、
実機でLoading状態でゲーム進行が停止した際に、内部で何が起こっているか、xCodeからの実機検証時、右下画面などからログを確認したい。たとえば、どのURLへアクセスしようとして、Loadingなのか? どの処理をしようとして、途中なのか? ということで、Loading となっている際に、4秒以上 そのままの状態になった際に、直前どのような処理をしたか、ログのさしこみで 見える化する コードか、機能を実装。
そのログを リングバッファとして、記録するかしないか選べるように。普段は、OFFにしておけばいいと思う。
上記はやってみたがうまくいかなった。 代わりに、 iOSとMacOS Xcode Safari WebInspector を両方つかった解析手法が1番やりやすかった。。 以下手段で、本問題を解決し、バトル開始前 Loading中 実機 で、エラーが出なかった問題は解消され、エラーログ出力を確認することができるようになった。以下手段で目的を達成できた。
-—
iOS の Capacitor アプリの WebView 内 JS は Mac の Safari から完全な DevTools で繋げる
接続手順
- iOS デバイス: 設定 → Safari → 詳細 → Web インスペクタ を ON
- Mac: Safari の環境設定 → 詳細 → 「メニューバーに開発メニューを表示」 を ON
- iOS デバイスを Mac に USB 接続
- Xcode で実機実行(Mac Safari は起動しておく)
- Mac Safari → 上部メニュー 「開発」 → デバイス名 → 聖痕のアルテミスト の WebView
- ブラウザ F12 と同じ DevTools が開く ← ここに
console.logが全部出る、Capacitor 経由なし
上記だけでは不足。実機ローカル検証時は、、
A. Capgo を一時的に無効化
apps/client/capacitor.config.ts に autoUpdate: false を追加:
CapacitorUpdater: {
defaultChannel: "stg",
autoUpdate: false, // ← デバッグ中はこれで OTA をオフに
publicKey: "..."
}
起動後、 MACOS Safari側 webInspector 側 Consoleで 以下コマンド実行で 起動したAppを再起動 リフレッシュ
Capacitor.Plugins.CapacitorUpdater.reset()
これでようやく反映された。。。
==
確認ポイントは ls -lasrt ios/App/App/public/assets/index-*.js
ios/App/App/public/assets/index-Bfta5H-6.js
Bfta5H という文字列
デフォルトは OTA バンドル
これだと、 5/6 時点だと Bj96Q4FtxI 版しか 実機検証で起動しない。
ローカルバンドル ソースが反映されない。
index-Bfta5H-6.js が console ログ上にもしっかり反映されていることを確認する。
ローカルバンドルが反映されていないと、ここの番号 ID が変化ない。 ソースファイルを変更しても、変化が生じない原因となる。