Hero img
Androidを複数台操作するADB

ADBコマンドで複数台操作をする。

android端末が複数台あった時adbコマンドで一度に全ての端末を操作するbatファイルを作りました。


目次

  • 目標
  • ADBとは?
  • ADBコマンドをしようするために
  • ADBをダウンロードする
  • 複数台操作する
  • batファイルで操作するには
  • adb -s 'デバイス名' 'コマンド'
  • 複数操作できるバッチファイルを作成する。
  • 処理が遅い
  • Parallel
  • powershell7のインストール
  • パラレル処理でのバッチコマンド
  • 使い方
  • 使うコマンド一覧
  • まとめ

目標

ADBコマンドで複数台のandroid端末で同じ操作をさせる。
バッチファイルを作成し、パラレル処理で実行させる。 adb-result

ADBとは?

ADBとは、Androidの開発・デバッグを行うためのコマンドラインツールです。ADBを使用することで、スマートフォンやタブレットとPCを接続し、様々な操作を行うことができます。

ADBを使用することで、以下のようなことができます。

  • Androidデバイスとコンピューター間でファイルを転送することができます。
  • Androidデバイスで実行中のプロセスを表示し、操作することができます。
  • Androidデバイスで実行中のログを取得することができます。
  • Androidデバイスのスクリーンキャプチャを取得することができます。
  • Androidデバイスの設定を変更することができます。

個人的に使うコマンドは

  • アプリのインストール
  • ファイル転送
  • osバージョン等取得
  • デバイスモデル取得

がメインで使用します。

ADBコマンドをしようするために

まず、ADBを使用するためには、Android SDK(Software Development Kit)をインストールする必要があります。Android Studioを使用している場合は、SDKは自動的にインストールされます。
それ以外の場合は、Android SDKの公式サイトからダウンロードしてインストールしてください。

ADBをダウンロードする

1.ADBをダウンロード

ADBはSDKの中に含まれていますとありますが、apkファイルを作成するわけではないのでコマンドツールのみをダウンロードします。 アンドロイドデベロッパー公式  

adb-installpage

2.androidを開発者モードを有効にする

androidビルド番号を10回連続でタップします。
※androidのメーカー毎に異なります。
とりあえずandroid「9.1....」「13....」という番号が表示されているところを10回タップしてください。

3.開発者向けオプションからUSBデバックを有効化します

USBデバックモードを有効化すると便利なので有効化にしておきます。
※セキュリティー的に良くないので使わない場合は無効化にしてください。 adb-developer-option adb-enable-usbdebug

4.ワイヤレスデバックを有効化

AndroidOS.11からワイヤレスデバックが使用可能になりました。そのため、PCと同じwifiを利用するとUSBケーブル無しで操作することができます。
これが大変便利です。tcpip打たなくって済む

adb-wireless-debug.png

ペア設定コードでペアリングを開始します。

adb-wireless-debug-pincode

接続のためのip,ポート,コードの情報が表示されるのでPCで接続を開始します。

adb-wireless-debug-showpincode
adb pair 192.168.2.69:39029 843874
adb-deviceslist-none

正常につながるとこのようにデバイスが表示されます。

cmd.exe
adb devices

adb-deviceslist-wireless

5.クイック設定開発者用タイル ワイヤレスデバックの設定は終わりましたが、有効化、無効化を簡単にするためにボタンを表示させておきます。

adb-quick-tile enable-wireless-button

その後ここでワイヤレスデバックのオン・オフが可能になります。 adb-wireless-debug-button

これでいつでもワイヤレスデバックをすることができるようになりました。

複数台操作する

adbで操作ができるようになれば、後はコマンドを叩くだけで良いのですが、複数台操作する為にバッチファイルを作成していきます。

batファイルで操作するには

androidが複数台つながっている場合はコマンド時、デバイスを選択しなければいけません。
つまりデバイス名リストを取得しなければバッチファイルを作ったところあまり便利にはなりません。

adb -s 'デバイス名' 'コマンド'

#例 画面スリープ状態から画面点けるコマンド  
#デバイス名を動的に変更させたいが...  
adb -s adb-94feg453-EVnTjZ._adb-tls-connect._tcp. shell input keyevent KEYCODE_WAKEUP

複数操作できるバッチファイルを作成する。

バッチファイルで複数操作するためには、「adb devices」で表示されるデバイス名だけを抽出しなければいけません。
しかし、windows Command Promptではできないようなので、Powrshellを使います。

powershell
set /p input=Enter command:
powershell -Command  "adb devices | Select-Object -Skip 1 | ForEach-Object { $_.Split(\"`t\")[0] } | ForEach-Object{adb.exe -s $_ %input% }"

処理が遅い

上記のコードで実行してみると確かにできるのだが...同期処理のためコマンドの実行が遅い。 非同期実行する方法を探って見たら「-Parallel」というものがあるのでこれを使うことにした。

Parallel

並列処理で一気に実行するもののようです。
しかし、Parallelを使おうとしたらpowershellのバージョンが古く使えないと表示されてしまった。
デフォルトのバージョンでは不可能だったため(2023年4月現在)powershell 7.3.3のバージョンを入れることにした

powershell7のインストール

powershell7.3.3をマイクロソフト公式からダウンロードする

1.MSIパッケージをダウンロードし実行させます。

adb-shell-installpage

2.インストールを進めます

adb-shell-install1

3.デフォルトの設定でPATHを追加します

adb-shell-install2 adb-shell-install3

動作確認

PowerShellの7.3.3を起動するには「pwsh」コマンドの様

#コマンドプロンプトで
pwsh
# PowerShell 7.3.3と表示されていれば成功です。

パラレル処理でのバッチコマンド

powershell7.3.3を使用し、最終的にこのようなコマンドになりました。 GOTO REPEATで繰り返しコマンドを入力できるようにし、パラレル処理で実行することにした。

androidcommand.bat
:REPEAT
set /p input=Enter command:
pwsh -Command "adb devices | Select-Object -Skip 1 | ForEach-Object { $_.Split(\"`t\")[0] } | ForEach-Object -Parallel {adb.exe -s $_ %input% }"
GOTO REPEAT

使い方

バッチを起動すると「Enter command」と聞かれるのでコマンド打ち込む

androidcommand.bat
input Enter Command:"shell am start -a android.settings.SETTINGS"
# "shell am start -a android.settings.SETTINGS"でアンドロイド端末の設定を開きます。

使うコマンド一覧

汎用性は少なそうですが、個人的に使ったコマンド達です。

#ホーム画面にもどる
shell am start -W -c android.intent.category.HOME -a android.intent.action.MAIN
#画面をスリープから起こす
shell input keyevent KEYCODE_WAKEUP
#ロック画面からホームへ
shell input keyevent 82
# X:y 位置をタップ
shell input touchscreen tap 600 2150
# アプリインストール
install -r -d "hogehoge.apk"

この辺りは検索すればたくさん出て来ます。
コマンドまとめもあるのでここを参考ください。

まとめ

batファイルでアンドロイド端末を複数操作できるようになったのだがここまで大仕事になるとは思わなかった、こうなるのであれば、C#でアプリを作った方が早い気がしたが...

関連記事

コメント

コメントを書く

質問や、間違いがありましたら、お気軽にどうぞ

※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください