⌨️

よく使うadbのコマンド

2020/09/17に公開

自分が比較的よく使うadbのコマンドです。
※2013年にQiitaに投稿した記事を持ってきました。

adb

adb

ダウンロードしたSDKのplatform-toolsディレクトリにパスを通しておく。
adb だけで実行すると使い方を見られる。

オプション
$ adb -e コマンド # エミュレータにコマンドを送る
$ adb -d コマンド # 端末にコマンドを送る
$ adb -s xxxx コマンド # コマンドを送る端末を指定できる

接続している端末が1台だけのときは指定しなくて良い。

adbのバージョン

adb version

出力例
$ adb version
Android Debug Bridge version 1.0.41
Version 30.0.4-6686687

このコマンドはほとんど使わないけど、この記事を書いた時の記録として。

接続している端末の確認

adb devices

出力例
$ adb devices
List of devices attached
27eb76b1cb217ece        device
emulator-5554   device

27eb76b1cb217ece が端末の識別番号のようなもの。
複数端末をつないでいる時に adb -s 27eb76b1cb217ece shell のように指定すると、その端末にコマンドを送れる。

apkのインストール・アンインストール

インストール

adb install

コマンド
# 通常のインストール
$ adb install xxxx.apk
# アップデートインストール
$ adb install -r xxxx.apk

xxxx.apk にインストールしたいapkのファイル名を指定する。
すでに端末に同じ署名のapkがインストールされてる場合は adb install -r xxxx.apk のように -r をつけると上書きできる。データファイルは保持される。

アンインストール

adb uninstall

コマンド
$ adb uninstall com.xxxx.appname

com.xxxx.appname にアンインストールしたいアプリのパッケージ名を指定する。
完全なパッケージ名を覚えていない場合、後述のpm list packages が便利。

ログの取得

adb log

コマンド
# オプションを指定せずにログ出力
adb logcat
# 出力形式を指定してログ出力
adb logcat -v time
# 現在のログをダンプする
adb logcat -d
# ログのクリア
adb logcat -c

標準出力に出力されるので、だいたいは adb logcat -v time > log.txt のようにリダイレクトしてる。
あとはvimで :r! adb logcat -v time -d のようにして取り込んだりする。

ファイルの転送

adb push adb pull

コマンド
# PCから端末へ
adb push PC上のファイル名 端末上のファイル名
adb push hoge.txt /sdcard/ # 例
# 端末からPCへ
adb pull 端末上のファイル名 PC上のファイル名
adb pull /sdcard/hoge.txt . # 例

転送先のファイル名は指定しても良いけど、ファイル名を変えることはあんまりないので省略することが多い。

adbの起動・停止

adb kill-server adb start-server

コマンド
# adbの停止
adb kill-server
# adbを起動
adb start-server

adbがうまく動いてないんじゃないか?と思った時にkill→startで再起動させてる。

shell

adb shell

コマンド
# shellを起動
adb shell
# shelコマンドを実行
adb shell コマンド

shellにコマンドを実行させたいときは adb shell コマンド の形で使う。
以下はshell上で実行できるコマンド

Shellから抜ける

exit

exitでShellから抜ける。
(これが書いてなくて困る人はいないと思うけど一応書いておく)

アプリの起動

コマンド
# Activityの起動(ACTION_VIEW + URL)
am start -a android.intent.action.VIEW -d http://google.com
# Activityの起動(クラス名を指定)
am start -n com.hoge.app/.FugaActivity
# サービスの起動
am startservice ... # Intentの指定方法はActivityと同じ
# ブロードキャストの送信
am broadcast ... # Intentの指定方法はActivityと同じ

Intentの内容を -a-d-n などのオプションで指定する。デバッグ実行したい場合は -D をつける。その他のオプションは am 単体で実行すれば見ることができる。
shellを起動せずに実行するときは adb shell am start -a android.intent.action.VIEW -d http://google.com のように指定する。

文字入力・キーイベント送信

文字入力

コマンド
input text hoge

マルチバイト文字列は送信できない(と思う)。
IMEが起動していると、IMEの入力モードの影響を受けることがある。

キーイベント送信

コマンド
input keyevent 3 # HOMEキー
input keyevent 4 # BACKキー
input keyevent 82 # MENUキー

数値でキーコードを指定する。
キーコードは KeyEvent | Android Developers を参照。

パッケージ名列挙

コマンド
pm list packages

インストールされてるアプリのパッケージ名が列挙される。
adb uninstall で必要なパッケージ名を一部しか覚えていないときに adb shell pm list packages | grep hoge のようにして使うことが多い。
(追記) grepを使わなくても、adb shell pm list packages hoge でフィルタリングできた。

cat

コマンド
cat /sdcard/hoge.txt

読み込み権限のあるファイルの中身を簡単に確認するときに使う。
vimで :r! adb shell cat /sdcard/hoge.txt のように使うことが多い。

Discussion