Android開発やデバッグ作業において、ADB(Android Debug Bridge)は欠かせないツールです。
ADBを使えば、コマンドラインから Androidデバイスを自由自在に操作できます。
アプリのインストール、ログの取得、ファイルの転送、画面キャプチャなど、開発現場で必要な作業のほとんどをコマンド一つで実行できる強力なツールです。
この記事では、ADBの基本的なコマンドから応用的な使い方までを、実例を交えてていねいに解説します。
初心者の方でも安心して使えるよう、手順を細かく説明していきます。
Android開発者、テスター、さらには Android端末をより深く活用したい方にとって、ADBは必須のスキルです。
ADBとは何か?

ADBの基本概念
ADB(Android Debug Bridge)は、Android デバイスとPC を接続し、コマンドラインからデバイスを操作するためのツールです。
ADBの主な特徴
- デバイス制御:PCからAndroidデバイスを遠隔操作
- ファイル転送:PC とデバイス間でのファイルのやり取り
- アプリ管理:アプリのインストール・アンインストール
- デバッグ支援:ログ取得や画面キャプチャ
- 開発支援:テスト環境の構築と管理
ADBの仕組み
ADBはクライアント・サーバー・アーキテクチャで動作します:
3つの構成要素
- ADBクライアント:PCで実行するコマンドライン プログラム
- ADBサーバー:PC上で動作し、クライアントとデーモンの仲介を行う
- ADBデーモン(adbd):Androidデバイス上で動作するバックグラウンド プロセス
通信の流れ
PC(ADBクライアント)→ PC(ADBサーバー)→ Android端末(ADBデーモン)
ADBのインストール方法
Android SDK Platform-Tools のダウンロード
公式サイトからダウンロード
- Android Developers 公式サイトにアクセス
- 使用するOSに応じたファイルをダウンロード
- ダウンロードしたファイルを解凍
環境変数の設定
Windows の場合
# 環境変数 PATH に platform-tools フォルダを追加
# 例:C:\android\platform-tools
macOS/Linux の場合
# .bash_profile または .zshrc に追加
export PATH=$PATH:/path/to/platform-tools
インストール確認
ADBが正しくインストールされているか確認
adb version
実行例
Android Debug Bridge version 1.0.41
Version 34.0.4-10411341
ADBの基本設定

デバイスの準備
USB デバッグの有効化
Android端末での設定手順
- 「設定」→「デバイス情報」を開く
- 「ビルド番号」を7回タップして開発者オプションを有効化
- 「設定」→「開発者オプション」を開く
- 「USB デバッグ」をオンにする
接続の確認
USBケーブルでの接続確認
adb devices
正常な場合の出力例
List of devices attached
1234567890ABCDEF device
デバイスが認識されない場合
List of devices attached
1234567890ABCDEF unauthorized
対処法:Android端末の画面に表示される「USB デバッグの許可」ダイアログで「OK」を選択
よくある接続問題と解決方法
デバイスが表示されない場合
原因と対処法
# ADBサーバーの再起動
adb kill-server
adb start-server
# デバイス一覧の再確認
adb devices
複数デバイスが接続されている場合
特定のデバイスを指定してコマンド実行
# デバイスのシリアル番号を確認
adb devices
# 特定のデバイスでコマンド実行
adb -s 1234567890ABCDEF shell
基本的なADBコマンド

デバイスの接続確認
接続されているデバイスの確認
コマンド
adb devices
詳細情報付きで表示
adb devices -l
出力例
List of devices attached
1234567890ABCDEF device product:taimen model:Pixel_2_XL device:taimen transport_id:1
ネットワーク経由での接続
TCP/IP 接続の有効化
# USB接続状態で実行
adb tcpip 5555
ネットワーク経由での接続
# デバイスのIPアドレスを指定
adb connect 192.168.1.100:5555
ネットワーク接続の解除
adb disconnect
アプリのインストール・管理
APKファイルのインストール
基本的なインストール
adb install app.apk
既存アプリの上書きインストール
adb install -r app.apk
データを保持して再インストール
adb install -r -d app.apk
システムアプリとしてインストール
adb install -s app.apk
アプリのアンインストール
アプリの削除
adb uninstall com.example.app
データを保持してアプリのみ削除
adb uninstall -k com.example.app
インストール済みアプリの確認
全アプリのパッケージ名一覧
adb shell pm list packages
システムアプリのみ表示
adb shell pm list packages -s
サードパーティアプリのみ表示
adb shell pm list packages -3
特定のキーワードで検索
adb shell pm list packages | grep chrome
ファイルの転送
PCからデバイスへのファイル転送
基本的な転送
adb push /path/to/local/file.txt /sdcard/
フォルダ全体の転送
adb push /path/to/local/folder/ /sdcard/folder/
転送の進行状況表示
adb push -p /path/to/local/file.txt /sdcard/
デバイスからPCへのファイル転送
基本的な取得
adb pull /sdcard/file.txt /path/to/local/
フォルダ全体の取得
adb pull /sdcard/Pictures/ ./Pictures/
ファイル操作の実例
設定ファイルのバックアップ
# データベースファイルの取得
adb pull /data/data/com.example.app/databases/app.db ./backup/
# 設定ファイルの取得
adb pull /data/data/com.example.app/shared_prefs/ ./backup/
デバイスの操作

再起動関連
通常の再起動
adb reboot
ブートローダーモードで再起動
adb reboot bootloader
リカバリーモードで再起動
adb reboot recovery
システムUIの再起動
adb shell killall com.android.systemui
画面操作
スクリーンショットの取得
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png ./
画面録画の開始
# 録画開始(Ctrl+Cで停止)
adb shell screenrecord /sdcard/recording.mp4
# 録画時間を指定(秒単位)
adb shell screenrecord --time-limit 30 /sdcard/recording.mp4
# ビットレートを指定
adb shell screenrecord --bit-rate 8000000 /sdcard/recording.mp4
タップとスワイプ操作
画面タップ
# 座標(x, y)をタップ
adb shell input tap 500 1000
スワイプ操作
# (x1, y1)から(x2, y2)へスワイプ
adb shell input swipe 500 1000 500 500
テキスト入力
# テキストを入力
adb shell input text "Hello World"
キー入力
# ホームボタン
adb shell input keyevent KEYCODE_HOME
# 戻るボタン
adb shell input keyevent KEYCODE_BACK
# メニューボタン
adb shell input keyevent KEYCODE_MENU
# 電源ボタン
adb shell input keyevent KEYCODE_POWER
シェル操作
シェルアクセス
インタラクティブシェルの起動
adb shell
単発コマンドの実行
adb shell ls /sdcard/
root権限でのシェル実行(root化端末)
adb shell su
システム情報の取得
Android バージョンの確認
adb shell getprop ro.build.version.release
デバイス情報の確認
adb shell getprop ro.product.model
adb shell getprop ro.product.manufacturer
メモリ使用量の確認
adb shell cat /proc/meminfo
CPU情報の確認
adb shell cat /proc/cpuinfo
プロセス管理
実行中のプロセス一覧
adb shell ps
特定のアプリのプロセス確認
adb shell ps | grep com.example.app
アプリの強制終了
adb shell am force-stop com.example.app
アプリの起動
adb shell am start -n com.example.app/.MainActivity
ログの取得と分析
基本的なログ表示
リアルタイムログの表示
adb logcat
ログレベルを指定
# エラーレベル以上のログのみ表示
adb logcat *:E
# 警告レベル以上のログのみ表示
adb logcat *:W
特定のタグのログのみ表示
adb logcat ActivityManager:I *:S
ログの保存と分析
ログをファイルに保存
adb logcat > logfile.txt
既存のログバッファをクリア
adb logcat -c
クラッシュログの確認
adb logcat -b crash
システムログの確認
adb logcat -b system
特定アプリのログ監視
特定のパッケージのログのみ表示
adb logcat --pid=$(adb shell pidof com.example.app)
複数のフィルタリング条件
adb logcat -s ActivityManager:I MyApp:D *:E
応用的な使い方

アプリの内部データアクセス
デバッグ可能なアプリのデータアクセス
アプリの内部ストレージへアクセス
adb shell
run-as com.example.app
cd /data/data/com.example.app
ls -la
データベースファイルの確認
run-as com.example.app
cat /data/data/com.example.app/databases/app.db
SharedPreferences の確認
run-as com.example.app
cat /data/data/com.example.app/shared_prefs/settings.xml
システム設定の変更
開発者向け設定
アニメーションスケールの変更
# アニメーションを無効化(テスト高速化)
adb shell settings put global window_animation_scale 0
adb shell settings put global transition_animation_scale 0
adb shell settings put global animator_duration_scale 0
画面タイムアウトの変更
# 30分(1800000ミリ秒)に設定
adb shell settings put system screen_off_timeout 1800000
画面の回転設定
# 自動回転を無効化
adb shell settings put system accelerometer_rotation 0
# 横向きに固定
adb shell settings put system user_rotation 1
ネットワーク関連
Wi-Fi の有効/無効
# Wi-Fi を有効化
adb shell svc wifi enable
# Wi-Fi を無効化
adb shell svc wifi disable
モバイルデータの有効/無効
# モバイルデータを有効化
adb shell svc data enable
# モバイルデータを無効化
adb shell svc data disable
パフォーマンス監視
CPU とメモリの監視
CPU 使用率の確認
adb shell top -n 1
特定アプリのメモリ使用量
adb shell dumpsys meminfo com.example.app
バッテリー情報の取得
adb shell dumpsys battery
GPU情報の取得
GPU レンダリング情報
adb shell dumpsys gfxinfo com.example.app
自動化とスクリプト
バッチ処理の例
複数APKの一括インストール
#!/bin/bash
for apk in *.apk; do
echo "Installing $apk..."
adb install "$apk"
done
ログの定期取得
#!/bin/bash
timestamp=$(date +%Y%m%d_%H%M%S)
adb logcat -d > "log_$timestamp.txt"
echo "Log saved to log_$timestamp.txt"
テスト自動化
UI テストのサポート
# 画面サイズの取得
adb shell wm size
# 画面密度の取得
adb shell wm density
# 自動テスト用の座標計算
adb shell input tap $((screen_width/2)) $((screen_height/2))
トラブルシューティング

よくある問題と解決方法
ADBサーバーの問題
サーバーが応答しない場合
# ADBサーバーを再起動
adb kill-server
adb start-server
ポート競合の解決
# 使用中のポートを確認
netstat -an | grep 5037
# プロセスの終了
taskkill /f /im adb.exe
デバイス接続の問題
デバイスが unauthorized の場合
- Android端末で「常に許可する」にチェック
- USBケーブルを再接続
- 開発者オプションを一度無効にしてから再度有効化
デバイスが offline の場合
# デバイスの再起動
adb reboot
# または USB モードの変更
# 端末の設定で「ファイル転送」に変更
権限関連の問題
権限不足エラーの対処
# root権限が必要な操作
adb shell su -c "command"
# ただし、root化された端末でのみ可能
パフォーマンス最適化
大容量ファイル転送の最適化
並列転送の実行
# 複数ファイルの並列転送
adb push file1.txt /sdcard/ &
adb push file2.txt /sdcard/ &
wait
圧縮を利用した転送
# ファイルを圧縮してから転送
tar -czf archive.tar.gz files/
adb push archive.tar.gz /sdcard/
adb shell "cd /sdcard && tar -xzf archive.tar.gz"
セキュリティ対策
本番環境でのADB使用
ADBの無効化
# USB デバッグを無効化
adb shell settings put global adb_enabled 0
ネットワークADBの無効化
# TCP/IP モードの無効化
adb usb
実践的な活用例

開発環境での活用
継続的インテグレーション(CI)
自動ビルド&テスト
#!/bin/bash
# APKのビルド
./gradlew assembleDebug
# アプリのインストール
adb install -r app/build/outputs/apk/debug/app-debug.apk
# 自動テストの実行
adb shell am instrument -w com.example.app.test/androidx.test.runner.AndroidJUnitRunner
# ログの取得
adb logcat -d > test_results.log
デバッグ支援
リアルタイムデバッグ
# アプリ起動とログ監視を同時実行
adb shell am start -n com.example.app/.MainActivity
adb logcat -s MyApp:D
テスト業務での活用
手動テストの効率化
テストデータの準備
# テスト用ファイルの配置
adb push test_data/ /sdcard/Android/data/com.example.app/files/
# データベースの初期化
adb shell run-as com.example.app rm /data/data/com.example.app/databases/app.db
テスト結果の収集
# スクリーンショットの一括取得
for i in {1..10}; do
adb shell input tap 500 1000
sleep 2
adb shell screencap -p /sdcard/test_$i.png
adb pull /sdcard/test_$i.png ./screenshots/
done
運用・保守での活用
リモート診断
システム状態の確認
# 基本情報の取得
adb shell getprop > device_properties.txt
adb shell dumpsys battery > battery_status.txt
adb shell dumpsys meminfo > memory_status.txt
アプリの動作確認
# アプリの起動確認
adb shell monkey -p com.example.app -c android.intent.category.LAUNCHER 1
# クラッシュの確認
adb logcat -b crash -d
ADBのセキュリティと注意点
セキュリティリスク
本番端末でのADB使用リスク
主なリスク
- 不正アクセスの可能性
- データの漏洩リスク
- システムの改ざんリスク
- 悪意のあるコマンドの実行
対策
- 本番環境では ADB を無効化
- ネットワーク ADB は特に注意
- 信頼できるネットワークでのみ使用
開発環境での注意点
アクセス制御
# ADBサーバーのアクセス制限
# ローカルホストからのみアクセス許可
adb -L tcp:localhost:5037 server nodaemon
ベストプラクティス
効率的な使用方法
エイリアスの設定
# よく使うコマンドのエイリアス設定
alias adb-screenshot='adb shell screencap -p /sdcard/screenshot.png && adb pull /sdcard/screenshot.png ./'
alias adb-logcat-app='adb logcat | grep $(adb shell ps | grep com.example.app | awk "{print $2}")'
スクリプトの活用
- 繰り返し作業の自動化
- 複数端末での並列実行
- エラーハンドリングの実装
まとめ
ADBは、Android開発・テスト・運用において非常に強力で多機能なツールです。
重要なポイントのおさらい
- 基本操作の習得:devices、install、shell などの基本コマンド
- ファイル操作:push、pull によるデータ転送
- デバッグ支援:logcat によるログ監視
- 自動化活用:スクリプトによる作業効率化
参考資料
コメント