原因

結論から言うね。
それめっちゃGboardのせい
Gboardを既定のキーボードにすれば直るよ。
(厳密には今回そのバグが私の端末で確認出来ただけではあるが….)

本題

恐らくこのブログにアクセスした奇特な人間が知りたい事は言い終わったと思うので、あとは経緯と妄言を書き連ねて行きたいと思う。

ポエム

10日ちょっとまえに配信されたXperiaのAndroidの16→17のアップグレード。意気揚々とアップグレードしたらブートループした挙句Android16に戻される。
docomoにも連絡してみたがなにそれ知らんって言われた。しかもTwitterには同じ症状の人は居ない。
確かにIntuneに登録してたりとかdocomoのウイルス標準搭載アプリを強制的に消したりはしているのでかなりおま環の可能性は疑った。
しかし最近の多要素認証の流れのせいで初期化は非常にめんどくさい。という事でAIに頼りながら原因特定を開始した。

やった事とそのログ↓

1. adb 接続

./adb devices
List of devices attached
XXXXXXXX        unauthorized   # 端末側で許可する前
XXXXXXXX        device         # 許可した後

2. 更新ポリシーと再起動理由の確認

./adb shell "dumpsys device_policy | grep -i -A5 SystemUpdate"
  Pending System Update: SystemUpdateInfo (receivedTime = 1793258439389, securityPatchState = unknown)

→ SystemUpdatePolicy(凍結期間など)は設定されていない。

./adb shell getprop persist.sys.boot.reason.history
reboot,rescueparty,1793373493   # 2026-10-31 00:18 JST
reboot,rescueparty,1793267109   # 2026-10-29 18:45 JST
reboot,rescueparty,1793259811   # 2026-10-29 16:43 JST
./adb shell "dumpsys dropbox | grep -iE 'system_server|system_app_crash|native_crash|SYSTEM_BOOT|rescue'"
2026-10-29 18:26:44 SYSTEM_BOOT (text, 581 bytes)
2026-10-29 18:45:39 SYSTEM_BOOT (text, 581 bytes)
2026-10-31 00:27:49 SYSTEM_BOOT (text, 581 bytes)
./adb shell dumpsys dropbox --print SYSTEM_BOOT
isPrevious: true
Build: docomo/SO-51G/XQ-GE:16/73.0.A.2.62/073000A002006201303119358:user/release-keys

→ 3件とも Android 16 に戻った後の起動記録。失敗した起動のクラッシュ記録は残っていなかった。

3. 更新中の logcat 記録

while ($true) {
  ./adb wait-for-device
  ./adb logcat -b all -v threadtime >> "boot_$(Get-Date -Format HHmmss).txt"
}

記録確認(別ウィンドウ):

dir boot_*.txt

4. 該当ログ

boot_153415.txt

11-10 15:34:58.390  4017  4017 E Zygote  : 	at com.android.server.pm.PackageManagerService$IPackageManagerImpl.setApplicationEnabledSetting(PackageManagerService.java:6252)
11-10 15:34:58.390  4017  4017 E Zygote  : 	at android.app.ApplicationPackageManager.setApplicationEnabledSetting(ApplicationPackageManager.java:3356)
11-10 15:34:58.390  4017  4017 E Zygote  : 	at com.android.server.inputmethod.InputMethodUtils.setDisabledUntilUsed(InputMethodUtils.java:161)
11-10 15:34:58.390  4017  4017 E Zygote  : 	at com.android.server.inputmethod.InputMethodUtils.setNonSelectedSystemImesDisabledUntilUsed(InputMethodUtils.java:141)
11-10 15:34:58.390  4017  4017 E Zygote  : 	at com.android.server.inputmethod.InputMethodManagerService.onUserReadyLocked(InputMethodManagerService.java:1722)
11-10 15:34:58.390  4017  4017 E Zygote  : 	at com.android.server.inputmethod.InputMethodManagerService.systemRunning(InputMethodManagerService.java:1703)
11-10 15:34:58.390  4017  4017 E Zygote  : 	at com.android.server.inputmethod.InputMethodManagerService$Lifecycle.onBootPhase(InputMethodManagerService.java:1209)
11-10 15:34:58.390  4017  4017 E Zygote  : 	at com.android.server.SystemServiceManager.startBootPhase(SystemServiceManager.java:329)
11-10 15:34:58.390  4017  4017 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
11-10 15:34:58.390  4017  4017 E AndroidRuntime: java.lang.RuntimeException: Failed to boot service com.android.server.inputmethod.InputMethodManagerService$Lifecycle: onBootPhase threw an exception during phase 550
11-10 15:34:58.806  2883  2883 I Zygote  : Process 4017 exited due to signal 9 (Killed)
11-10 15:34:58.806  2883  2883 E Zygote  : Exit zygote because system server (pid 4017) has terminated

boot_153629.txt(例外メッセージ本文)

11-10 15:37:22.044  5384  5384 E AndroidRuntime: 	at com.android.server.inputmethod.InputMethodUtils.setDisabledUntilUsed(InputMethodUtils.java:161)
11-10 15:37:22.044  5384  5384 E AndroidRuntime: 	at com.android.server.inputmethod.InputMethodUtils.setNonSelectedSystemImesDisabledUntilUsed(InputMethodUtils.java:141)
11-10 15:37:22.044  5384  5384 E AndroidRuntime: 	at com.android.server.inputmethod.InputMethodManagerService.onUserReadyLocked(InputMethodManagerService.java:1722)
11-10 15:37:22.045  5384  5384 I am_crash: [5384,0,system_server,-1,java.lang.SecurityException,Cannot disable required package com.google.android.inputmethod.latin,PackageManagerService.java,4278,0]
11-10 15:37:22.046  5384  5384 D ActivityManager: New dropbox entry: system_server, system_server_crash, 37bf604c-d884-4187-8382-f850b6939b1d
11-10 15:37:22.385  4105  4105 I Zygote  : Process 5384 exited due to signal 9 (Killed)
11-10 15:37:22.385  4105  4105 E Zygote  : Exit zygote because system server (pid 5384) has terminated

boot_153832.txt

11-10 15:39:24.512  3552  3552 I Zygote  : Process 5020 exited due to signal 9 (Killed)
11-10 15:39:24.512  3552  3552 E Zygote  : Exit zygote because system server (pid 5020) has terminated

5. Gboard の状態確認

./adb shell pm list packages -d | Select-String inputmethod.latin
# 出力なし(パッケージとしては無効化されていない)

./adb shell "dumpsys package com.google.android.inputmethod.latin | grep -E 'User 0|enabled='"
User 0: ... installed=true hidden=false suspended=false ... enabled=0 ...
./adb shell settings get secure enabled_input_methods
./adb shell settings get secure default_input_method
com.touchtype.swiftkey/com.touchtype.KeyboardService;-592404411;-613867059
com.touchtype.swiftkey/com.touchtype.KeyboardService

→ アプリは有効だが、キーボード設定で Gboard がオフ(有効な IME は SwiftKey のみ)。

6. 回避策

設定からキーボードをGboardのみを利用する設定に変更

この状態で更新 → 成功(ログは 7. を参照)。

7. 回避策適用後の更新ログ

boot_155708.txt(Android 16 上でのインストール〜再起動直前)

  • 15:58:28 に更新後の処理がすべて成功し、ErrorCode::kUpdatedButNotActive で終了(「書き込み完了・再起動待ち」の意味で、エラーではない)
  • 15:58:45 ごろからストレージの切り離しが始まり、再起動に入ってログが終わる
  • FATAL EXCEPTION / am_crash / RescueParty / FACTORY_RESET は出ていない

boot_155924.txt(Android 17 での起動)

11-10 15:59:57.903  4026  4175 D ActivityManagerTiming: FinishBooting
11-10 15:59:57.903  4026  4175 I boot_progress_enable_screen: 65608
11-10 15:59:57.908  4026  4175 I screen_toggled: 1

失敗時との比較:

確認項目 失敗した3回 回避策適用後
FATAL EXCEPTION IN SYSTEM PROCESS あり なし
am_crash(system_server) Cannot disable required package com.google.android.inputmethod.latin なし
RescueParty 発動 なし
起動の進み具合 phase 550 で落ちる boot_progress_enable_screen まで到達
system_server の PID 再起動のたびに変わる 4026 のまま

成功時にも出ているが、起動を止めていないログ:

  • am_wtf … WindowManager, Unexpected pending wakeup group:記録のみの警告
  • ContextImpl: Failed to update user.inode_cache:更新後の初回起動でキャッシュフォルダがまだないときに出るもの
  • dex2oat64 の警告:更新後のアプリ再最適化時のもの(Sony のゲームエンハンサー)

init の SIGABRT について

調査の途中で、3回目の失敗直後に init の SIGABRT と crash_dump helper failed to exec が記録されていたため原因候補にしていた。しかし同じ記録は boot_155708.txt の先頭(時計が合う前の起動)にもあり、その後正常に起動している。ブートループとは無関係と判断した。

8. 未確認事項

  • Gboard を「必須パッケージ」扱いにしているのが Sony と Google のどちらかは不明。

まとめ

….だってさ
正直adbとかはほとんど使わないのでマジでほえーって感じ…
さすがにGboardを通常の設定画面から無効化してるだけでアップグレードこけるのはどうかとおもう。
せめてちゃんとエラーくらいは吐いてほしい。
あと、アップグレードのどさくさに紛れて要らないアプリとゲームをインストールさせようとするのやめてね。更新し終わって喜んでたらよくわかんないアプリをインストールさせられかけた….
しかも手動で外さないといけないカス仕様