ADBコマンド完全ガイド

1. はじめに

ADB(Android Debug Bridge)は、Androidデバッグブリッジの略称で、ソケットTCPポートを介した通信方式を採用しています。スマートフォンとの接続には、有線接続と無線接続の2つの方法があります。

(1)有線接続

データケーブルでスマートフォンを接続後、[開発者向けオプション]で[USBデバッグ]を有効にし、[USB設定の選択]で[MTP(メディア転送)]を選択します。

(2)無線接続

adb connect IPアドレス

注意点:

  • スマートフォンとPCは同じローカルネットワークに接続されている必要があります
  • [USBデバッグ]を有効にし、[MTP(メディア転送)]を選択する必要があります

次のようなエラーが表示される場合:

cannot to 192.168.0.109:5555: 対象コンピュータによって接続が拒否されました。(10061)

次の手順でスマートフォンに接続できます:

  • データケーブルでスマートフォンとPCを接続し、次のコマンドを実行:adb tcpip 5555
  • データケーブルを外し、[USBデバッグ]を有効にし、[MTP(メディア転送)]を選択
  • 次のコマンドを実行:adb connect 192.168.0.109

2. 主要コマンド

2.1 基本コマンド

:: デバイスの確認
adb devices
:: 詳細なデバイス情報の確認(モデル名を含む)
adb devices -l

:: スマートフォン情報の確認(ブランド、モデル、バージョンなど)
adb shell cat /hw_product/etc/prop/local.prop | findstr product
adb shell cat /system/build.prop | findstr product

:: 再起動
adb reboot

:: ログの確認
adb logcat > log.txt
adb logcat | findstr "検索文字列"

:: インストール/アンインストール
adb install xxx.apk
adb uninstall パッケージ名

:: ファイルのプル/プッシュ
adb remount
adb pull  /sdcard/a.mp4  C:\Users\ユーザー名\Desktop\
adb push  C:\Users\ユーザー名\Desktop\a.mp4  /sdcard/

:: 現在表示中のアクティビティとパッケージ名の確認
adb shell dumpsys window | findstr "mCurrentFocus"

:: アプリケーションバージョンの確認
adb shell pm dump com.example.test | findstr "versionName"

:: 指定コマンドのヘルプ表示
adb コマンド --help
adb shell コマンド --help

メソッド呼び出しスタックの出力:

android.util.Log.d("TAG", android.util.Log.getStackTraceString(new Throwable()));

2.2 画面キャプチャ/録画

:: 画面キャプチャ
adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png C:\Users\ユーザー名\Desktop\

:: 画面録画
adb shell screenrecord  /sdcard/1.mp4

注意:画面キャプチャ時、[-d]オプションでdisplay idを指定できます。デフォルトは0です。

2.3 システムパラメータの確認/変更

:: システムパラメータ値の確認
adb shell getprop system_params

:: システムパラメータ値の設定
adb shell setprop system_params パラメータ値

:: スマートフォンモデルの確認
adb shell getprop ro.product.model

:: ファームウェアビルド日時の確認
adb shell getprop ro.build.date

2.4 入力のシミュレーション

:: 入力コマンドのヘルプ表示
adb shell input --help

:: 指定座標へのタップ
adb shell input tap <x座標> <y座標>

:: スワイプ操作
adb shell input swipe <x1座標> <y1座標> <x2座標> <y2座標>

:: テキストの入力
adb shell input text <入力文字列>

:: キーイベントの送信
adb shell input keyevent <キーコード>

注意:[-d]オプションでdisplayIdを指定できます。例:

:: 指定displayの指定座標をタップ
adb shell input -d 1 tap 100 200

主な:

3    ホームキー
4    バックキー
5    ダイアラーを開く
6    通話を終了
24   音量を上げる
25   音量を下げる
26   電源キー
27   カメラアプリで撮影
64   ブラウザを開く
82   メニューキー
85   再生/一時停止
86   停止
87   次の曲へ
88   前の曲へ
122  カーソルを行頭またはリストの先頭に移動
123  カーソルを行末またはリストの末尾に移動
126  再生を再開
127  一時停止
164   マイクをミュート
176   設定を開く
187   アプリを切り替え
207   連絡先を開く
208   カレンダーを開く
209   ミュージックを開く
210   電卓を開く
220   画面の輝度を下げる
221   画面の輝度を上げる
223   スリープモードへ
224   画面を点灯
231   ボイスアシスタントを開く
276   ウェイクロックがない場合にスリープ

2.5 adb shell settings

(1)プロパティの確認

:: システム/グローバル/セキュアプロパティの確認
adb shell settings list system
adb shell settings list global
adb shell settings list secure

:: 自動ロック時間の確認(単位:ミリ秒)
adb shell settings list system | findstr "screen_off_timeout"
adb shell settings get system screen_off_timeout

:: 現在の画面輝度の確認
adb shell settings get system screen_brightness

:: デフォルトの入力メソッドの確認(com.example.input/.ImeService)
adb shell settings get secure default_input_method

(2)プロパティの設定

:: 自動ロック時間の設定(単位:ミリ秒、ここでは1日)
adb shell settings put system screen_off_timeout 86400000

:: 現在の画面輝度の設定
adb shell settings put system screen_brightness 100

:: 初期セットアップをスキップ
adb shell settings put global device_provisioned 1 && adb reboot

2.6 adb shell am

am(ActivityManager)は、主にアクティビティやサービスの起動、ブロードキャストの送信などに使用されます。

:: メモ帳を開く
adb shell am start com.huawei.notepad

:: QQを強制終了
adb shell am force-stop com.tencent.mobileqq

:: サービスを起動
adb shell am startservice  -a com.example.test.DemoService

:: ブロードキャストを送信
adb shell am broadcast -a com.example.test.ACTION
adb shell cmd activity broadcast -a com.example.test.ACTION
:: ブロードキャストにパラメータを付けて送信(ブール値: ez、整数: ei、長整数: el、浮動小数点: ef、倍精度浮動小数点: ed、文字列: es)
adb shell am broadcast -a com.example.test.ACTION --ei パラメータキー 1

:: 工場出荷時の状態に戻す
adb shell am broadcast -a android.intent.action.MASTER_CLEAR

2.7 adb shell wm

wm(WindowManager)は、主にウィンドウ管理に使用されます。

:: スマートフォンの解像度の確認:Physical size: 1080x2340
adb shell wm size

:: 物理的な画面密度の確認:Physical density: 480
adb shell wm density

2.8 adb shell pm

pm(PackageManager)の主な機能:

  1. アプリのインストール/アンインストール
  2. インストール済みアプリのクエリ
  3. パーミッションの確認/追加/削除
  4. アプリケーション関連情報のクエリ(アプリケーション、アクティビティ、サービス、レシーバー、プロバイダーおよびそのプロパティなど)
  5. ユーザーデータやキャッシュのクリア
:: アプリのインストール(インストールファイルがスマートフォン上にある場合)
adb shell pm install パッケージパス

:: アプリのアンインストール
adb shell pm uninstall パッケージ名

:: インストール済みアプリのパッケージ名の確認
adb shell pm list packages [-s:システムパッケージ] [-3:サードパーティーパッケージ]

:: 指定アプリのapkパスの取得
adb shell pm path com.example.test

:: 指定アプリのインストールパスの取得
adb shell pm get-install-location

:: パーミッションの付与
adb shell pm grant com.example.test android.permission.READ_EXTERNAL_STORAGE

:: パーミッションの剥奪
adb shell pm revoke com.example.test android.permission.WRITE_EXTERNAL_STORAGE

:: すべてのユーザーのリスト表示
adb shell pm list users

:: ユーザーの作成
adb shell pm create-user "ユーザー名"

:: ユーザーの削除
adb shell pm remove-user ユーザーID

:: 指定アプリのすべてのデータをクリア
adb shell pm clear com.example.test

2.9 プロセス操作

:: プロセスの確認
adb shell ps | findstr "com.tencent.mobileqq"

:: プロセスの強制終了
adb shell kill PID
adb shell am force-stop パッケージ名

:: ADBサービスの停止/起動
adb kill-server
adb start-server

2.10 adb shell uiautomator

UIレイアウトのダンプ

adb shell uiautomator dump --compressed  /data/local/tmp/uidump.xml
adb pull /data/local/tmp/uidump.xml

XMLのオンライン整形

2.11 dumpsys

(1)adb shell dumpsys activity

:: アクティビティコンポーネント情報の確認
adb shell dumpsys activity activities
adb shell dumpsys activity activities | findstr /C:"* Hist"
:: アクティビティのdumpメソッドの呼び出し
adb shell dumpsys activity com.zhyan8.test

:: サービスコンポーネント情報の確認
adb shell dumpsys activity services
:: サービスのdumpメソッドの呼び出し
adb shell dumpsys activity service TestService

:: ContentProviderコンポーネント情報の確認
adb shell dumpsys activity providers

:: BroadcastReceiver情報の確認
adb shell dumpsys activity broadcasts

:: Intent情報の確認
adb shell dumpsys activity intents

:: プロセス情報の確認
adb shell dumpsys activity processes

(2)adb shell dumpsys window

:: ウィンドウ情報の確認
adb shell dumpsys window windows
adb shell dumpsys window windows | findstr /C:"Window #"

:: 画面情報の確認
adb shell dumpsys window displays

:: ポリシー情報の確認
adb shell dumpsys window policy

:: アニメーション情報の確認
adb shell dumpsys window animator

:: セッション情報の確認
adb shell dumpsys window sessions

:: トークン情報の確認
adb shell dumpsys window tokens

:: トレース情報の確認
adb shell dumpsys window trace

(3)adb shell dumpsys gfxinfo

# アプリケーションのグラフィックレンダリングパフォーマンスデータの取得
adb shell dumpsys gfxinfo system total
adb shell dumpsys gfxinfo com.android.systemui total

(4)その他

:: 入力情報の確認
adb shell dumpsys input

:: メモリ情報の確認
adb shell dumpsys meminfo
adb shell dumpsys meminfo com.zhyan8.test

:: 電源管理情報の確認
adb shell dumpsys power

:: バッテリー情報の確認【現在の電量、バッテリー状態、バッテリー温度など】
adb shell dumpsys battery

:: レンダリング情報の確認
adb shell dumpsys SurfaceFlinger

3. ウィンドウとパフォーマンス分析

3.1 winscope

winscopeを使用すると、各フレームのウィンドウ階層情報を確認でき、「ちらつき」「黒い画面」などの問題分析に便利です。

winscopeを取得する方法は以下の通りです。winscopeと動画ファイルを取得後、これらをwinscope.htmlページにドラッグ&ドロップすると、各フレームのスクリーンショット、ウィンドウ階層構造、ウィンドウプロパティなどの情報を確認できます。winscope.htmlファイルの場所:aosp\platform\prebuilts\misc\common\winscope\winscope.html。

1)ウィンドウのトレース

adb root
:: トレース開始
adb shell cmd window tracing start
:: 画面録画開始
adb shell screenrecord /sdcard/screenrecord.mp4
:: 画面録画終了(Ctrl + Cを押す)
:: トレース終了
adb shell cmd window tracing stop
:: 画面録画ファイルの取得
adb pull /sdcard/screenrecord.mp4
:: トレースファイルの取得
adb pull /data/misc/wmtrace/wm_trace.winscope wm_trace.winscope

2)SurfaceFlingerのトレース

adb root
:: トレース開始
adb shell service call SurfaceFlinger 1025 i32 1
:: 画面録画開始
adb shell screenrecord /sdcard/screenrecord.mp4
:: 画面録画終了(Ctrl + Cを押す)
:: トレース終了
adb shell service call SurfaceFlinger 1025 i32 0
:: 画面録画ファイルの取得
adb pull /sdcard/screenrecord.mp4
:: トレースファイルの取得
adb pull /data/misc/wmtrace/layers_trace.winscope

3.2 Perfetto

Perfettoは、高性能のエンドツーエンドの可視化ツールで、システムのパフォーマンストレースと分析に使用されます。主にAndroidとChrome OSで使用されますが、LinuxとWindowsでも実行できます。Perfettoは、カーネルイベント、システムコール、アプリケーションイベント、ユーザー定義のトレースデータなど、複数のソースからのデータを収集・分析できます。

1)カスタムトレースデータ

ユーザーがカスタムトレースデータを追加したい場合は、以下のコードブロックを追加します。

import android.os.Trace;

Trace.beginSection("トレースタグ");
// トレース対象のコードロジック
Trace.endSection();

2)トレースの取得

[開発者オプション-システムトレース]で[長期トレース]と[録音トレース1]を有効にすると、トレースが開始されます。その後、スマートフォンでバグを再現し、バグが再現したら[録音トレース1]をクリックしてトレースを終了します。トレースファイルは/data/local/traces/に保存され、拡張子は.perfettoです。

トレースファイルをhttps://ui.perfetto.devページにドラッグ&ドロップすると、トレース情報を確認できます。

4. 拡張機能

(1)一括プッシュ

特定の拡張子を持つファイルを一括でプッシュする必要がある場合、以下のスクリプトを使用できます:

set ソースパス=E:\android\jar\
set ターゲットパス=/system/framework/

cd %ソースパス%

for %%s in (*.jar) do (
	adb push %%s %ターゲットパス%
)

pause

注意:上記のコードはbatスクリプトファイルに配置する必要があります。コマンドプロンプトで直接入力する場合は、%%sを%sに変更してください。

(2)プロパティの追加

adb pull hw_product/etc/prop/local.prop
echo xxx_prop = true >> local.prop
adb push local.prop hw_product/etc/prop/local.prop

(3)クリックのシミュレーション

@echo off
setlocal EnableDelayedExpansion

set /a ループ回数=10
adb remount
for /l %%i in (1,1,!ループ回数!) do (
	echo **********%%i**********
	call :loop
)
pause

:: ループ本体
:loop
	adb shell input tap 500 500
	:wait 3
	adb shell input swipe 500 1000 500 0
	:wait 3
	call :screenshot
	:wait 2
goto:eof

:: 画面キャプチャ
:screenshot
	adb shell screencap -p /sdcard/1.png
	adb pull /sdcard/1.png 1.png
	set 日付一時=%date:~0,10%
	set 時間一時=%time:~0,12%
	set 時間一時=%時間一時::=-%
	set 時間一時=%時間一時:.=-%
	set t=%日付一時:/=-%_%時間一時: =0%
	echo %t%
	set ファイル名=%t%.png
	ren 1.png %ファイル名%
goto:eof

:: 待機
:wait
	choice /T %1 /C ync /CS /D y /n
	::ping 127.0.0.1 -n 1 >nul
goto:eof

(4)ディレクトリ内のファイル名が最大のファイルを取得

@echo off
setlocal EnableDelayedExpansion

set ディレクトリ="/sdcard/Pictures/Screenshots/"
call :getLastFile %ディレクトリ%
echo 最終ファイル: %最終ファイル%

adb pull %ディレクトリ%%最終ファイル%
pause

:getLastFile
set "最終ファイル="
set "コマンド=adb shell ls %1"
for /f "tokens=*" %%f in ('%コマンド%') do (
    if not defined 最終ファイル (
        set "最終ファイル=%%f"
    ) else if "%%f" gtr "%最終ファイル%" (
        set "最終ファイル=%%f"
    )
)
goto:eof

(5)アプリのレンダリング情報を一括取得(各レイヤーのスクリーンショットを含む)

@echo off
setlocal EnableDelayedExpansion

adb shell rm -rf /data/user/0/null/dumpGraphics/graphicbuffer
adb shell rm -rf /data/user/0/com.android.systemui/dumpGraphics/graphicbuffer
adb shell rm -rf /data/user/0/com.android.launcher/dumpGraphics/graphicbuffer

adb shell dumpsys gfxinfo system total
adb shell dumpsys gfxinfo com.android.systemui total
adb shell dumpsys gfxinfo com.android.launcher total

if exist "dumpGraphics" (
 rmdir /s /q "dumpGraphics"
)

if not exist "dumpGraphics\system\" (
 mkdir "dumpGraphics\system"
)

if not exist "dumpGraphics\systemui\" (
 mkdir "dumpGraphics\systemui"
)

if not exist "dumpGraphics\launcher\" (
 mkdir "dumpGraphics\launcher"
)

timeout /t 2 /nobreak >nul

adb pull /data/user/0/null/dumpGraphics/graphicbuffer dumpGraphics/system
adb pull /data/user/0/com.android.systemui/dumpGraphics/graphicbuffer dumpGraphics/systemui
adb pull /data/user/0/com.android.launcher/dumpGraphics/graphicbuffer dumpGraphics/launcher

pause

(6)Perfettoトレースを一括取得

Perfettoトレースを一括で取得するスクリプトは以下の通りです。詳細なリソースは→Perfettoトレース取得スクリプトを参照してください。

@echo off
setlocal EnableDelayedExpansion
chcp 65001 > nul

adb shell setprop persist.traced.enable 1
adb shell setenforce 0

echo トレースを開始します
adb push config.pbtx /data/local/tmp/config.pbtx
timeout /t 2 /nobreak >nul
adb shell "cat /data/local/tmp/config.pbtx | perfetto --txt -c - -o /data/misc/perfetto-traces/trace.perfetto-trace --detach=myname"
echo 任意のキーを押してトレースを停止

pause >nul
echo トレースを停止します
adb shell perfetto --attach=myname --stop

adb shell setprop persist.traced.enable 0
adb shell setenforce 1

for /f "usebackq delims=" %%a in (`powershell -Command "Get-Date -Format 'yyyy-MM-dd_HH-mm-ss'"`) do set "日時=%%a"
echo 日時: %日時%

adb pull /data/misc/perfetto-traces/trace.perfetto-trace  trace_%日時%.pb

pause

タグ: ADB Androidデバッグ Android開発 コマンドライン パフォーマンス分析

5月27日 02:34 投稿