2012年02月01日
Androidのadbのメモ(7) Androidデバイス側でadbを動かす
adbdはAndroidデバイス側、adb clientとadb serverはホスト側で動かすのが普通ですが、Android 4.0ではAndroidデバイス側用のadbコマンド (adb clinet & adb server) がビルドされています。これを動かしてみましょう。
Android4.0のシリアルコンソールで
# ls -l /system/bin/adb -rwxr-xr-x root root 97144 2012-01-12 05:10 adb #
adbコマンドがありました。
実行してみます。
# adb devices * daemon not running. starting it now on port 5038 * * daemon started successfully * List of devices attached #
ホスト側で動作するadb serverはport 5037をlistenしていますが、これは5038です。
しかし、deviceに何も見えません。うまくいくなら自分自身が見えるはずです。
# ps ... system 431 44 169428 39028 ffffffff 40011384 S com.android.settings root 450 1 1880 404 ffffffff 4000c794 S adb root 457 50 960 340 00000000 40010438 R ps #
念のためpsでプロセスを見るとadb serverらしきプロセスが常駐しています。
今はadbdはUSBからの接続を待っている状態です。これをTCPに切り替えてみます。以前書いたこのページが参考になります。
# setprop service.adb.tcp.port 5555 # stop adbd # start adbd #
これでadbdはTCPのport 5555からの接続を待つようになるはずです。
# adb kill-server # adb devices * daemon not running. starting it now on port 5038 * * daemon started successfully * List of devices attached emulator-5554 device #
今度はデバイスが見つかりました。
# adb shell ls acct cache config d data default.prop ...
あまり意味はないけど、adb のshell上でlsを動かしてみました。動いているようです。
さて、これの使い道ですが、強いて言えばホスト側で動かしていたadbコマンドを含むshellスクリプトを大きく変更せずに、ターゲットデバイス内部で動かすことができるようになるということでしょうか。大量のテストを実施するときに役に立つことがあるのかもしれません。
関連するページ
Android Builders SummitでADBの話をしました
Androidのadbのメモ(1) adb serverの観察
Androidのadbのメモ(5) adb shell lsを実行したときのログ
Androidのemulator consoleに簡単にコマンドを送る方法
Androidのadbのメモ(6) 直接adb serverと通信するrubyスクリプト
Androidのadbのメモ(7) Androidデバイス側でadbを動かす
Androidのadbのメモ(8) Android以外でadbを使う実験
Androidのadbのメモ(9) Android端末同士をadbでつなぐ
Androidのadbのメモ(10) adbdの起動のトリガー
Androidのadbのメモ(11) adbdのsecureモード
トラックバックURL
コメント一覧
> 自分の中でループバックさせてadbから自分自身のadbdとつないで
> みましたが、これにどんな用途があるのかいまひとつわかりませんでした。
Heliumってバックアップアプリは端末内でadbをループバックさせてadb backupを実行するアプリらしいですが、そういったadbでしかできない事を端末内で出来るようになりますね。
ただフツーのAndroid端末でadbをループバックさせる準備(adbdをtcpに切り替える処理?)の為に一度別のホストにUSB接続しなきゃ駄目らしいので、そのまんまでは応用できない・・・