Android起動時に自動起動するアプリで例外→リブートを繰り返す

Android起動時にBOOT_COMPLETED*1を受信して自動起動するアプリがExceptionを吐いて死んでしまうと、システムが再起動を延々と繰り替えしてしまうケースがあるようだ。


fastbootを使って/dataを初期化*2してしまえばいいのだが、それも乱暴過ぎるという場合のバッドノウハウ


サンプルのHomeアプリ*3などのホーム置き換えアプリのパッケージを起動時にインストールして、BOOT_COMPLETEDが流れる前にホーム選択ダイアログを出させてしまうという手段を使う。

$ adb wait-for-device && adb push home.apk /data/app/home.apk

この状態で例外を吐くアプリのパッケージを/data/appから消してしまえばいい。なお、samplesのHomeはまともに動かないので、デフォルトアプリには絶対にしていけない。