Androidでアプリ作ったけど謎のdebugモードが解消されなくて2日はまったでござる

Eclipse+ADTの開発環境からUSBで送り込むとまったく問題なく動くのに、.apkのパッケージにしてサインしてウェブに置き、そこからダウンロードさせてインストール実行すると「デバッガに接続しています、お待ちください(“waiting for debugger”)というダイアログが出てアプリが起動してくれない、という現象に悩まされていました。

アプリとして配布したけど、デバッガ待ちの状態になってしまう現象の理由として考えられる原因を検索等で調べていくと、以下のようなものがあるようです。

AndroidManifest.xmlで明にデバッグモードを指定している

applicationでandroid:debuggable=”true”と書いてあると、作成されたアプリは常にデバッグモードになるようです。

アプリケーションの中でDebug.waitForDebugger()を呼んでいる

デバッガを待つコードを書いてれば、当然リリースモードでビルドしてもデバッガ待ちに入ります。

アプリケーションの中でその他のデバッグモードで動くクラスを呼んでいる

という書き込みをどっかのMLで見たような気がしますが、呼んだらデバッグモードになっちゃうクラスって何、というのは書いてありませんでした。これはほんとかどうかわかりません。

デバッグ版が不完全にアンインストールされている

USBでつないで実機でデバッグなどしていた場合に、実機のアプリケーション一覧からアンインストールしただけでは、署名関係などが残ってしまいリリース版のインストールがうまくいかないことがあるそうです。インストールできない、とデバッガ待ちで止まってしまう、では症状が違うので厳密には今回のトラブルとは関係ないかもしれませんが。 参考

これらを一個ずつ確認していきますが、特に問題はありません。完全手詰まりでウンウン悩んでは同じ手順を繰り返してましたが、解決方法は意外なところに。

Androidを再起動する

Android実機を再起動したら、同じ.apkを使ってインストールしても、デバッガ待ちにはならなくなりました。

携帯電話だと思うと、ほとんど電源を切ることが無いのですけど、今度から何かがうまくいかなかったときは、パソコンと同様に再起動も試してみようと思います。

逆に、実機でデバッガ実行したいのに動かないときの確認項目は、こちらが詳しいです。