Android Debug Bridge(adb)
日付:2022/01/12
URL:https://developer.android.com/studio/command-line/adb?hl=ja
調査者:chigichan24, go, saku
カテゴリ:debug
一言で表すと
概要
chigichan24
shell command
adb を介してデバイス コマンドを発行したり、対話型シェルを起動したりできます。
なるほど
面白い操作はだいたいこの中にあるな
am command
activity manager
adb シェル内でアクティビティ マネージャー(am)ツールを使用してコマンドを発行することにより、アクティビティの起動、プロセスの強制停止、インテントのブロードキャスト、デバイス画面プロパティの変更など、さまざまなシステム アクションを実行できます。
adb shell am で直接呼び出す or shell に入って am
adb shell am start -R 100 [intent]
-R で起動を繰り返す回数を指定できる。
上の例だと 100 回
ユースケースが分からん
Mori Atsushi.icon 直ちに100個呼び出される?activityが終了したときに再度呼ばれる?
Mori Atsushi.icon 居酒屋タブレットのときとかに終了させても復帰させたいとか?
adb shell am display-size [reset | widthxheight]
display size を reset する。
widthxheightにする。
低解像度デバイスのシミュレーション、いつも developer option から設定していたので、このほうが楽だな
類似の役割のものに、display-density dpi がある
Go.iconresetがあるの助かる
pm command
package manager
adb シェル内で Package Manager(pm)ツールを使用してコマンドを発行することにより、デバイスにインストールされているアプリ パッケージに対してアクションやクエリを実行できます。
adb shell pm で直接呼び出す
adb shell pm trim-caches desired_free_space
キャッシュファイルを消して、desired_free_space 分の空き領域を作る
地味に便利そう
adb shell pm [grant|revoke] package_name permission
permission を付与・取り消しできる
便利そう
adb shell pm get-max-users
用途がわからん
code: shell
% adb shell pm get-max-users
Maximum supported users: 4
dpm command
device policy manager
Device Policy Manager(dpm)ツールにコマンドを発行することにより、デバイス管理アプリなどのエンタープライズ アプリの開発やテストを促進できます。このツールを使用することで、アクティブな管理アプリを制御したり、デバイス上のポリシー ステータス データを変更したりできます。
adb shell dpm command で直接 command を呼び出す
結構用途がわからんコマンドが多い
adb shell dpm set-active-admin [options] component
component に何を渡すんだろう
saku.icon package nameだったはず
active admin になるとどうなるんだろう
saku.icon Runtime permissionを自動取得したり色々できます
adb shell dpm set-device-owner [options] component
こっちはなんとなく想像ができる
キオスク端末とかはこういう操作が必要でそのデバッグで使えそう
https://developer.android.com/guide/topics/admin/device-admin?hl=ja
あっ deprecation なの...?
https://developers.google.com/android/work/device-admin-deprecation?hl=ja
deprecationなのは、device-adminというものだけで、同じような操作はset-device-ownerでできるので、それで代用してるよ〜って話でした saku.icon san 談
adb shell dpm clear-freeze-period-record
以前に設定したシステム OTA 更新凍結期間のデバイスの記録をクリアします。この機能により、凍結期間を管理するアプリを開発する際、スケジュール設定に関するデバイス制限を回避することができます。
https://developer.android.com/work/dpc/system-updates?hl=ja#development_and_testing
Go
知らないコマンドを調べる👀
デバイスにファイルをコピーする、デバイスからファイルをコピーする
(クライアントは開発マシンPC)
code:txt
adb pull remote local
デバイス → 開発マシン
adb push local remote
開発マシン → デバイス
adb sync
$ANDROID_PRODUCT_OUT からデバイスにローカルビルドを同期します (デフォルトはすべて)
開発マシン → デバイス
デフォルト以外だと all|data|odm|oem|product|system|system_ext|vendor
adb-syncのラッパー?
https://github.com/google/adb-sync
インストール系
code:txt
adb install-multiple path/to/apk path/to/apk
複数のAPKをPUSHする
adb install-multi-package
1つ以上のパッケージをデバイスにPUSHする?
code:txt
app installation (see also adb shell cmd package help):
install -lrtsdg --instant PACKAGE
push a single package to the device and install it
install-multiple -lrtsdpg --instant PACKAGE...
push multiple APKs to the device for a single package and install them
install-multi-package -lrtsdpg --instant PACKAGE...
push one or more packages to the device and install them atomically
saku
adb shell svc
電源、ネットワーク周りなどの制御ができるっぽい
デバイスを直接操作できない状態でこれらを制御したいなら使えるかも?
画面ロックした状態とか、ダイレクトブートとか
chigichan24.icon おもしろコマンド集だ
Mori Atsushi.icon ネットワークのON/OFFがandroid 12からめんどくさくなったので使おうかな
power
adb shell svc power reboot で再起動したりとか
usb
adb shell svc usb setFunctions [function]
svc usb getFunctions で有効なfunctionを取得できて、それを設定できる。USB接続のモード切り替えみたいなやつかな?
有効な値として定義されてたのは'mtp', 'ptp', 'rndis','midi', 'ncm (if supporting gadget hal v1.2)'
adb shell svc usb getUsbSpeed
転送スピード取る。 low_speed high_speedみたいな固定の値が取れる。
USB規格の値っぽい。 https://ja.wikipedia.org/wiki/ユニバーサル・シリアル・バス
nfc, bluetooth, wifi
enable と disable でON/OFFするだけ
chigichan24.icon 試しに手元でやってみたらめっちゃ簡単にネットワーク切れて便利!!
Mori Atsushi.icon mobile回線はない?
svc data enable/disable っぽいです
system-server
system-server wait-for-crash
system serverプロセスがクラッシュするまで待つ・・・?
気になるポイント
コメント
Go.iconadbわからないことがいっぱいだった