Android デバッグ中か否かを判定する

Android アプリから、GAE の認証を行うことは出来たのだが、GAE の SDKに含まれる開発環境にうまく接続することが出来ない。

仕方がないので、デバッグ中か否かを判定して、デバッグ中の場合は、接続先のURLをローカルアドレスに変更し、認証プロセスをスキップさせようと思いそれらしいAPIを探してみる。

android.os.Debug.isDebuggerConnected()

あった。

・・・ が、試せど試せど 上記の結果が true にならない。いらいらいらいら。

しらべてたら、SDKにこんな記述が。

Declare your application as debuggable in your manifest

マニフェストファイルに書けばいいのね。ふーん。

で、見てみると、ありました、Debuggable = true に設定。

android_debugable01

LogCat に出力するとキャプチャがとれないし、false の場合確認が出来ないので、Toast に表示させるべく、メイン Activity の onCreate に以下を記述。

(Toast.makeText(this, 
    String.valueOf("Debug.isDebuggerConnected() = " + Debug.isDebuggerConnected()), 
    Toast.LENGTH_LONG)).show();

(が、Toast にしてもキャプチャはとれないことに後で気づく)

起動してみると、以下の様なダイアログが。ちゃんと機能してるっぽい。あたりまえか。

 android_debugable02

そして、きちんと Toast に true が表示されました。

もちろん USB デバッグを停止して実行すると false が返りました。これでデバッグ時と通常時で挙動が切り替えられます。一歩野望に近づきました。

android_debugable03

Eclipse のプラグインからもいろいろ操作ができるようになりました。

android_debugable04   

リリースするときには false に戻した方が良さそうです。