ADB(Android Debug Bridge)は、Android SDKに含まれる多機能なコマンドラインユーティリティです。USBケーブルまたはWi-Fiを介して、コンピューターがAndroidデバイスと直接通信できるようにします。ADBを使用すると、アプリケーションのインストールとアンインストール、ファイルのコピー、シェルコマンドの実行、システムログの表示、スクリーンショットや画面録画の取得、設定の管理、さらには自動テストの実行まで行えます。このツールは、デバイスを完全に制御したい開発者、テスター、愛好家にとって不可欠です。
重要なポイント
Android Debug Bridge(ADB)は、クライアント(コンピューター上で実行)、サーバー(コンピューター上のバックグラウンドプロセス)、デーモンadbd(Androidデバイス上で実行)の3つのコンポーネントからなるクライアントサーバーアプリケーションです。開発者やエンジニアがスマートフォンをPCに接続すると、ADBはコマンド、ファイル、データを送信できる信頼性の高い通信チャンネルを作成します。
ADBの主な使用例には、APKをストアに公開せずに実機でアプリケーションをデバッグする、エラー解析のためのログ抽出、テスト自動化、データバックアップ、リカバリイメージのフラッシュ、ルートアクセスの取得が含まれます。コードを書かない場合でも、ADBはアプリケーションからのスクリーンショット抽出、電話画面のビデオガイド録画、ファームウェア更新失敗後のデバイス復旧に役立ちます。
ADBサポートはAndroid 2.1(API 7)以降のすべての公式Androidビルドに組み込まれています。開発者オプションでUSBデバッグを有効にする必要があります。Android 4.2以降、初回接続時にデバイスは確認を求めます:RSAキーによって特定のコンピューターのデバッグを許可する必要があります。
Windowsの場合 — Google Developersの公式サイトからPlatform Toolsをダウンロードし、アーカイブをC:\adbフォルダに解凍して、このパスをPATH環境変数に追加します。ターミナルを再起動すると、adbコマンドがグローバルに使用可能になります。
macOSの場合 — 最も簡単な方法は、HomebrewパッケージマネージャーでADBをインストールすることです:brew install android-platform-toolsを実行します。すべての依存関係は自動的に解決されます。
Linuxの場合 — Debian / Ubuntuベースのディストリビューション:sudo apt install adb。インストール後、ユーザーをplugdevグループに追加します:sudo usermod -aG plugdev $USER。ADBがUSBデバイスにアクセスできるように再ログインします。
adb versionコマンドでインストールを確認します。出力にAndroid Debug Bridgeのバージョン番号が表示されれば、ツールは使用可能です。
初回接続は常にadb devicesコマンドから始まります。接続されたデバイスとそのステータスのリストが表示されます。デバイスがunauthorizedと表示される場合は、画面のロックを解除して電話でデバッグを確認してください。
adb devices
List of devices attached
emulator-5554 device
0123456789ABCD device
アプリケーションのインストール — 最も頻繁な操作の一つです。APKファイルへのパスを指定するだけです:
adb install C:\apps\myapp.apk
アプリが既にインストールされていて更新版に置き換える必要がある場合は、-r(replace)フラグを追加します:
adb install -r C:\apps\myapp-v2.apk
アプリケーションのアンインストールはパッケージ名で行います:
adb uninstall com.example.myapp
ファイルのコピー — adb pullはデバイスからコンピューターにファイルを取得し、adb pushはデバイスにファイルをアップロードします:
adb pull /sdcard/DCIM/screenshot.png .
adb push myfile.txt /sdcard/Documents/
インタラクティブシェル — adb shellコマンドはデバイスのコマンドシェルを開きます。その中で標準的なLinuxコマンド(ls、ps、top、dumpsys、pm、amなど)を実行できます。
adb shell
tissot_sprout:/ $ ls -la /sdcard/
tissot_sprout:/ $ ps | grep com.android.chrome
アクティビティの起動 — ADBを介して、アイコンを手動で探さずに任意のアプリや画面を開くことができます:
adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main
LogcatはAndroidのログシステムで、アプリケーション、システムサービス、カーネルからのメッセージを収集します。デバッグに不可欠なツールです:ログから、アプリがクラッシュした理由、例外を引き起こしたメソッド、特定の操作にかかる時間を把握できます。
フィルターなしの単純な起動 — adb logcat。ログストリームは無限です。停止するにはCtrl+Cを押します。タグでメッセージをフィルターするには、-sパラメーターを使用します:
adb logcat -s MainActivity:V
ログの重要度レベル(詳細から重大順):V(Verbose)、D(Debug)、I(Info)、W(Warning)、E(Error)、F(Fatal)。タグとレベルの組み合わせにより、必要なメッセージのみを強調表示できます。
テスト前に蓄積されたバッファをクリアするには:
adb logcat -c
ログをファイルに保存するには:
adb logcat -d > app_logs.txt
-d(dump)フラグは現在のバッファを出力し、ターミナルをブロックせずに終了します。自動化スクリプトに便利です。
スクリーンショットはadb shell screencapコマンドで撮影します。結果はファイルに保存され、後でadb pullで取得します:
adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png
置換とパイプを使用して、両方の操作を一行に結合できます。実際には、これによりドキュメント作成やテストレポート作成が高速化します。
画面録画はAndroid 4.4+(API 19)で利用可能です。デフォルトの録画時間は180秒、ビットレートは4 Mbpsです。メインコマンド:
adb shell screenrecord /sdcard/demo.mp4
録画を停止するにはCtrl+Cを押します。ビデオ解像度はデバイスの画面解像度に一致しますが、1080pを超えません。ビットレートを変更するには--bit-rateを指定します:
adb shell screenrecord --bit-rate 8000000 /sdcard/demo.mp4
診断コマンド: adb shell dumpsysはすべてのシステムサービスの状態を出力します。バッテリー情報のみを取得するには:
adb shell dumpsys battery
インストール済みパッケージのリストはPackage Managerで取得できます:
adb shell pm list packages
アプリ設定のリセット(設定でのデータ消去に相当):
adb shell pm clear com.example.myapp
Wi-Fiデバッグは、デバイスをUSBに接続したままにする必要をなくします。コンピューターとデバイスが同じネットワーク上にあることを確認します。最初にadb tcpip 5555を実行し、USBを外してからIP経由で接続します:
adb tcpip 5555
adb connect 192.168.1.100:5555
デバイスのIPアドレスが不明な場合は、ケーブルを外す前にadb shell ip addr show wlan0で確認します。
データバックアップはアプリケーションまたはシステム全体をrootなしで実行できます:
adb backup -apk -shared -all -system -f mybackup.ab
バックアップからの復元:
adb restore mybackup.ab
入力エミュレーション — adb shell inputコマンドは、タップ、スワイプ、キー押下、テキスト入力をシミュレートできます。これは追加のフレームワークなしでのUIテスト自動化の基盤です:
adb shell input tap 500 1000
adb shell input swipe 300 500 800 500
adb shell input text "Hello, ADB!"
異なるモードでの再起動:
adb reboot # normal reboot
adb reboot recovery # recovery mode
adb reboot bootloader # bootloader (fastboot)
fastbootモードは、イメージのフラッシュ、ブートローダーのロック解除、カスタムリカバリのインストールへのアクセスを提供します。
複数のデバイスまたはエミュレーターが同時に接続されている場合、ADBは特定のシリアル番号を必要とします。adb devicesコマンドは、シリアル番号とともにすべての接続デバイスを一覧表示します。
特定のデバイスにコマンドを送るには、-sフラグを使用します:
adb -s 0123456789ABCD install myapp.apk
デバイスが1台だけの場合はフラグを省略できます。ただし、複数のエミュレーターが同時に実行されるCI環境では、シリアル番号の指定が必須です。
ADBサーバーの強制終了 — デバイスが認識されなくなったりエラーが発生したりした場合、サーバーの再起動が役立ちます:
adb kill-server
adb start-server
その後adb devicesを実行します — サーバーが再起動し、デバイスデーモンにリクエストをリダイレクトします。
| コマンド | 説明 |
|---|---|
| adb devices | 接続されたデバイスの一覧を表示 |
| adb install |
デバイスにAPKファイルをインストール |
| adb uninstall |
パッケージ名でアプリケーションをアンインストール |
| adb shell | インタラクティブなコマンドシェルを開く |
| adb push |
ファイルをコンピューターからデバイスにコピー |
| adb pull |
ファイルをデバイスからコンピューターにコピー |
| adb logcat | システムとアプリのログを表示 |
| adb shell screencap | スクリーンショットを撮る |
| adb shell screenrecord | 画面のビデオを録画 |
| adb reboot | デバイスを再起動 |
| adb tcpip 5555 | Wi-Fi用にADBをTCP/IPモードに切り替え |
| adb connect |
Wi-Fi経由でデバイスに接続 |
よくある質問
設定 → 端末情報を開き、ビルド番号を7回タップします。メインの設定メニューに戻ると、開発者オプションセクションが表示されます。その中でUSBデバッグを有効にします。Android 4.2以降、初めてコンピューターに接続する際は、デバイス画面でRSAデバッグキーを確認する必要があります。
デバイスがコンピューターを信頼していません。電話画面のロックを解除し、USBデバッグを許可ダイアログが表示されたら、このコンピューターを常に許可するにチェックを入れてOKをタップします。ダイアログが表示されない場合は、USBケーブルを抜き差しするか、adb kill-server && adb start-serverを実行します。
ADBは画面操作を必要としません。USBでデバイスを接続し、adb devicesに表示されるのを待って(デバッグが既に有効になっている場合)、adb install
ADBはAPKを直接インストールし、インストール中のGoogle Play Protectチェックをバイパスするため、公開前にアプリをテストできます。ただし、インストール後も最終的なマルウェアチェックは実行されます。ADBはGoogleアカウントを必要としないため、法人キオスクやGoogleサービスがないデバイスで重要です。
はい、大多数のADBコマンドはルートなしで動作します。例外は、保護されたシステムパーティションへのアクセスが必要なコマンドです(例:ブートパーティションの直接ダンプやシステムファイルの変更)。日常的なタスク — アプリのインストール、ログ取得、スクリーンショット、バックアップ、入力エミュレーション — にはルートは必要ありません。
ADB(Android Debug Bridge)は、プロフェッショナルレベルでAndroidを扱うすべての人にとって基本的なツールです。基本的なアプリインストールから複雑なテスト自動化やデバイス復旧まで、ADBはコンピューターとスマートフォンまたはタブレットの相互作用のほぼすべてのシナリオをカバーします。
この記事で説明したコマンドを習得すれば、ターミナルを通じてAndroidデバイスを自信を持って管理し、ログを分析し、ドキュメント用のスクリーンショットを撮り、バックアップを実行し、開発プロセスを加速できるようになります。定期的な練習とadb helpの出力の学習により、この強力なツールの経験豊富なユーザーになれるでしょう。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。