作成日:2023-04-11
android端末が複数台あった時adbコマンドで一度に全ての端末を操作するbatファイルを作りました。
ADBコマンドで複数台のandroid端末で同じ操作をさせる。
バッチファイルを作成し、パラレル処理で実行させる。
ADBとは、Androidの開発・デバッグを行うためのコマンドラインツールです。ADBを使用することで、スマートフォンやタブレットとPCを接続し、様々な操作を行うことができます。
ADBを使用することで、以下のようなことができます。
個人的に使うコマンドは
がメインで使用します。
まず、ADBを使用するためには、Android SDK(Software Development Kit)をインストールする必要があります。Android Studioを使用している場合は、SDKは自動的にインストールされます。
それ以外の場合は、Android SDKの公式サイトからダウンロードしてインストールしてください。
1.ADBをダウンロード
ADBはSDKの中に含まれていますとありますが、apkファイルを作成するわけではないのでコマンドツールのみをダウンロードします。 アンドロイドデベロッパー公式
2.androidを開発者モードを有効にする
androidビルド番号を10回連続でタップします。
※androidのメーカー毎に異なります。
とりあえずandroid「9.1....」「13....」という番号が表示されているところを10回タップしてください。
3.開発者向けオプションからUSBデバックを有効化します
USBデバックモードを有効化すると便利なので有効化にしておきます。
※セキュリティー的に良くないので使わない場合は無効化にしてください。
4.ワイヤレスデバックを有効化
AndroidOS.11からワイヤレスデバックが使用可能になりました。そのため、PCと同じwifiを利用するとUSBケーブル無しで操作することができます。
これが大変便利です。tcpip打たなくって済む
ペア設定コードでペアリングを開始します。
接続のためのip,ポート,コードの情報が表示されるのでPCで接続を開始します。
adb pair 192.168.2.69:39029 843874
正常につながるとこのようにデバイスが表示されます。
adb devices
5.クイック設定開発者用タイル ワイヤレスデバックの設定は終わりましたが、有効化、無効化を簡単にするためにボタンを表示させておきます。
その後ここでワイヤレスデバックのオン・オフが可能になります。
これでいつでもワイヤレスデバックをすることができるようになりました。
adbで操作ができるようになれば、後はコマンドを叩くだけで良いのですが、複数台操作する為にバッチファイルを作成していきます。
androidが複数台つながっている場合はコマンド時、デバイスを選択しなければいけません。
つまりデバイス名リストを取得しなければバッチファイルを作ったところあまり便利にはなりません。
#例 画面スリープ状態から画面点けるコマンド
#デバイス名を動的に変更させたいが...
adb -s adb-94feg453-EVnTjZ._adb-tls-connect._tcp. shell input keyevent KEYCODE_WAKEUP
バッチファイルで複数操作するためには、「adb devices」で表示されるデバイス名だけを抽出しなければいけません。
しかし、windows Command Promptではできないようなので、Powrshellを使います。
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を使おうとしたらpowershellのバージョンが古く使えないと表示されてしまった。
デフォルトのバージョンでは不可能だったため(2023年4月現在)powershell 7.3.3のバージョンを入れることにした
powershell7.3.3をマイクロソフト公式からダウンロードする
1.MSIパッケージをダウンロードし実行させます。
2.インストールを進めます
3.デフォルトの設定でPATHを追加します
PowerShellの7.3.3を起動するには「pwsh」コマンドの様
#コマンドプロンプトで
pwsh
# PowerShell 7.3.3と表示されていれば成功です。
powershell7.3.3を使用し、最終的にこのようなコマンドになりました。 GOTO REPEATで繰り返しコマンドを入力できるようにし、パラレル処理で実行することにした。
: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」と聞かれるのでコマンド打ち込む
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#でアプリを作った方が早い気がしたが...
質問や、間違いがありましたら、お気軽にどうぞ
※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください