Android Debug Bridge (adb) とは?

Android の SDK (Software Development Kit) には、 Android のアプリケーション開発を支援するためのツールが多数用意されています。

この資料ではアンドロイド・デバッグ・ブリッジ (Android Debug Bridge, ADB) というツールについて、その仕組み、何ができるのか、ということを説明します。

adb とは?

Android Debug Bridge は adb と省略されます。 これは Android SDK の platform-tools に含まれるツールです。

このツールを用いると、現在利用可能なデバイス・エミュレータの列挙、シェルコマンドの発行、ファイルの転送などが行えます。

Eclipse から Android アプリをビルドしたときも、裏側で adb を用いてエミュレータまたは実際のデバイスに接続します。

adb の仕組み

adb は主に adb クライアントadb サーバー から構成されます。

adb クライアントを起動すると、adb クライアントは現在実行中の adb サーバーを探します。サーバーが見つからない場合は、adb サーバープロセスを起動します。

adb サーバープロセスは起動後 TCP ポートの 5037 番で待ち受けを開始します。 adb クライアントは、5037 番ポートに接続に行きます。

adb サーバーを明示的に起動するには、 adb start-server コマンドを実行します。

$ sudo ./adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

少し細かい話になりますが adb サーバーは、 5555 番ポートから奇数番を 5585 番までスキャンをして、エミュレータ・デバイスを探しに行きます。 エミュレータ・デバイスを見つけたら、adb サーバーはそれへのコネクションを確立します (adb コネクション)。

エミュレータ/デバイスは 5555番から 5585 番までの奇数番号で adb コネクションを待ち受け、偶数番 (5554番から5584番) でコンソール・コネクション (console connection) を確立します。

adb サーバは複数のエミュレータ/デバイスに接続し、また複数の adb クライアントが接続します。

現在接続中のエミュレータ/デバイスを確認するには、adb devices コマンドを使います。

$ ./adb devices
List of devices attached 
0160611A0A019007  device
emulator-5554     device

エミュレータのデバイス名は emulator-<コンソールコネクションのポート番号> です。

ちなみに、次のように no permissions となる場合があります。

$ ./adb devices
List of devices attached 
????????????	no permissions
emulator-5554	device

これは、 adb が root で起動していないときに発生しますので、一旦 adb kill-server で adb サーバーを停止してからルートで adb start-server することで解決できる場合があります。

Android Device Chooser

Eclipse から開発しアプリケーションをビルドする場合も、複数のデバイスが接続されていることを検出すると、どの端末上で実行するか選択する画面がでてきます。

Android Device Chooser

これがすなわち、 adb に接続しているデバイスということになります。

その他、apk ファイルに対する install コマンドなど、 adb を使ってやれることはまだあります。ここでは adb の大まかな仕組みについて説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Android 開発入門