ADB(Android Debug Bridge)基本操作完全ガイド|開発・デバッグに必須のコマンド集

プログラミング・IT

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つの構成要素

  1. ADBクライアント:PCで実行するコマンドライン プログラム
  2. ADBサーバー:PC上で動作し、クライアントとデーモンの仲介を行う
  3. ADBデーモン(adbd):Androidデバイス上で動作するバックグラウンド プロセス

通信の流れ

PC(ADBクライアント)→ PC(ADBサーバー)→ Android端末(ADBデーモン)

ADBのインストール方法

Android SDK Platform-Tools のダウンロード

公式サイトからダウンロード

  1. Android Developers 公式サイトにアクセス
  2. 使用するOSに応じたファイルをダウンロード
  3. ダウンロードしたファイルを解凍

環境変数の設定

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端末での設定手順

  1. 「設定」→「デバイス情報」を開く
  2. 「ビルド番号」を7回タップして開発者オプションを有効化
  3. 「設定」→「開発者オプション」を開く
  4. 「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 の場合

  1. Android端末で「常に許可する」にチェック
  2. USBケーブルを再接続
  3. 開発者オプションを一度無効にしてから再度有効化

デバイスが 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 によるログ監視
  • 自動化活用:スクリプトによる作業効率化

参考資料

コメント

タイトルとURLをコピーしました