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に切り替えてみます。以前書いたこのページが参考になります。

KZM-A9-DualボードのAndroidのADBの接続

# 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スクリプトを大きく変更せずに、ターゲットデバイス内部で動かすことができるようになるということでしょうか。大量のテストを実施するときに役に立つことがあるのかもしれません。



トラックバックURL

コメント一覧

1. Posted by    2017年02月12日 01:41
> 「Androidのadbのメモ(7) Androidデバイス側でadbを動かす」では、
> 自分の中でループバックさせてadbから自分自身のadbdとつないで
> みましたが、これにどんな用途があるのかいまひとつわかりませんでした。

Heliumってバックアップアプリは端末内でadbをループバックさせてadb backupを実行するアプリらしいですが、そういったadbでしかできない事を端末内で出来るようになりますね。
ただフツーのAndroid端末でadbをループバックさせる準備(adbdをtcpに切り替える処理?)の為に一度別のホストにUSB接続しなきゃ駄目らしいので、そのまんまでは応用できない・・・

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード