adb(Android Debug Bridge)コマンド使っていますか?
最近はAndroid Studioでいろいろできるため、少し使う機会が減っているかと思いますが、よく使うadbコマンドを一覧化しておきたいと思い今回まとめることにしました。
※私はMacを使っているので、Windowsを使っている方や違うバージョンを使っている方で、出力が異なるところがある場合があります。
adbコマンド
adbバージョン出力
バージョンとadbのパスを出力する。
$ adb version
Android Debug Bridge version 1.0.41
Version 29.0.4-5871666
Installed as /Users/<アカウント>/Library/Android/sdk/platform-tools/adb
adbの起動・停止
adbを開始する。
$ adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully
adbを停止する。
$ adb kill-server
adb何かおかしい?と思った時に開始・停止をしたりします。
接続中デバイスの表示
接続中のデバイスを表示する。
$ adb devices
List of devices attached
SCV7N18607003611 device
emulator-5554 device
※2デバイス接続中の例。
devices
の後に-l
オプションを付けるともう少し詳しく情報が出力されます。
オプション
エミュレータにコマンドを送る。
$ adb -e <コマンド>
端末にコマンドを送る。
$ adb -d <コマンド>
コマンドを送る端末を指定する。
$ adb -s <デバイス> <コマンド>
これらは複数端末同時に接続されていなければ指定は不要です。
ネットワーク経由で端末接続
USBを端末に接続せず、ネットワーク経由で接続することができます。
以下の順に設定します。
PORT番号でTCP/IP接続をリスニングする。
※基本的に5555で良い。
$ adb tcpip <ポート番号>
ネットワーク経由で端末に接続する。
$ adb connect <端末のIP>:<ポート番号>
ネットワーク経由での接続を解除する。
$ adb disconnect <端末のIP>:<ポート番号>
USBでの接続をリスニングする。
$ adb usb
※ネットワーク経由での接続をやめるときには、こちらの設定をしておくとセキュリティ的に良いです。
アプリのインストール
アプリをインストールする。
$ adb install <apkのファイルパス>
Performing Streamed Install
Success
アプリを上書きインストールする。
$ adb install -r <apkのファイルパス>
Performing Streamed Install
Success
テスト用のapkをインストールするときは-t
オプションをつける。
$ adb install -t <テスト用apkのファイルパス>
Performing Streamed Install
Success
アプリのアンインストール
アプリをアンインストールする。
$ adb uninstall <パッケージ名>
Success
パッケージ名がわからない場合は後述するpm list packages
でパッケージ名を調べられます。
ファイルの転送
PC から端末へ
PC 上から端末内にファイルを転送する。
$ adb push <PC上ファイルパス> <端末上のファイル保存先>
<PC上ファイルパス>: 1 file pushed. 0.3 MB/s (21791 bytes in 0.060s)
<端末上のファイル保存先>
は、例えばsdcard/Download
などのように指定します。
端末から PC へ
端末内から PC 上へ転送する。
$ adb pull <端末上のファイルパス> <PC上の保存先>
<端末上のファイルパス>: 1 file pulled. 0.4 MB/s (21791 bytes in 0.059s)
ログ
ログ出力
ログを出力する。
$ adb logcat
優先度指定
優先度でフィルターをかけてログを出力する。
指定できる優先度はこちら。
※指定優先度以上のログが出力されます。
$ adb logcat *:<優先度>
形式指定ログ出力
出力形式を指定してログ出力する。
指定できるフォーマットはこちら。
$ adb logcat -v <フォーマット>
形式修飾子ログ出力
形式修飾してログを出力する。
指定できる形式修飾子はこちら。
※形式指定と形式修飾は同時に可能です。
$ adb logcat -v <形式修飾子>
優先度に応じて行に色をつけて表示することも可能です。
$ adb logcat -v color
ログクリア
ログをクリアする。
$ adb logcat -c
adb shell
Androidのバージョンによっては実行できないものもあります。
shell
シェルを起動する。
$ adb shell
端末の画面サイズ取得
端末の画面サイズを取得する。
$ adb shell wm size
パッケージ一覧を表示
パッケージ一覧を表示する。
$ adb shell pm list packages
package:com.amazon.mShop.android.shopping
package:com.android.cts.priv.ctsshim
package:com.google.android.youtube
.....
多くのパッケージが表示されるので、絞り込みたい場合にはパイプでgrep
を繋ぐと表示件数を減らせます。
$ adb shell pm list packages | grep 'youtube'
package:com.google.android.youtube
ブロードキャスト
アクションをブロードキャストする。
$ adb shell am broadcast -a <アクション名> --es "<key>" "<value>"
Broadcasting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x400000 pkg=android.intent.action.BOOT_COMPLETED }
Broadcast completed: result=0
端末で画面に表示中のアクティビティ名を表示
デバッグしている時に、今画面に表示しているアクティビティが何のクラスなのか知りたい時ありますよね。
その時に使えます。
現在表示中のアクティビティ名を表示する。
$ adb shell dumpsys activity | grep -B 1 "Run #[0-9]*:"
TaskRecord{dcacb14 #225 A=com.tf.android.lifecycelsample U=0 StackId=49 sz=2}
Run #1: ActivityRecord{69f9d6e u0 com.tf.android.lifecycelsample/.activity.SecondActivity t225}
Run #0: ActivityRecord{71ecad8 u0 com.tf.android.lifecycelsample/.activity.FirstActivity t225}
--
TaskRecord{eb0bfbd #2 I=com.google.android.apps.nexuslauncher/.NexusLauncherActivity U=0 StackId=0 sz=1}
Run #0: ActivityRecord{47af813 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t2}
端末で画面に表示中の階層構造を表示
端末で画面に表示中のビューの階層構造やFragmentManager管理するフラグメントの一覧を確認する。
$ adb shell dumpsys activity top
TASK null id=2 userId=0
ACTIVITY com.google.android.apps.nexuslauncher/.NexusLauncherActivity 47af813 pid=12133
Local Activity cb1d1fe State:
mResumed=false mStopped=true mFinished=false
mChangingConfigurations=false
...
端末で画面に表示中のフラグメント名を表示
現在表示中のフラグメント名を表示する。
※dumpsys active top
コマンドをgrep
で絞り込んでいるだけです。
$ adb shell umpsys activity top | grep 'Active' -A 2
Active Fragments in 84a9c4b:
#0: ReportFragment{659628 #0 androidx.lifecycle.LifecycleDispatcher.report_fragment_tag}
mFragmentId=#0 mContainerId=#0 mTag=androidx.lifecycle.LifecycleDispatcher.report_fragment_tag
--
mCreated=true mResumed=true mStopped=false Active Fragments in 4837b70:
#0: FirstFragment{437dee9 #0 id=0x7f07003f}
mFragmentId=#7f07003f mContainerId=#7f07003f mTag=null
参考資料
ログ出力の優先度や形式修飾子については こちらのdeveloperドキュメント を確認いただければと思います。
また、インテントについては こちらのdeveloperドキュメント を確認ください。
コメント