adb logcat を実行すると、以下のエラーが繰り返し表示されます。
-waiting for device -
error: more than one device and emulator
これを回避するには、-s オプションにて、デバイスを指定する必要があります。
シリアル番号は adb devices で確認できます。
以下は実行例です。
C:\> adb devices
… (1)
List of devices attached
HT97ALF0xxxx device
emulator-5554 device
C:\> adb -s emulator-5554 logcat … (2)
(1) 実機1つ、エミュレータが1つ起動されている状態です
(2) エミュレーターに対して、adb logcat を実行しています。
毎回、シリアル番号を指定するのは面倒なので、バッチを作成してみました。
logcat_cmd.bat 等、適当な名前で保存して、実行するだけで使用できます。
デバイスが1つしかないときは、無条件に adb logcat を実行し、
デバイスが2つ以上あるときは、リストから選択させるようにして、
adb -s <シリアル番号> logcat を実行するようにしています。
毎回、シリアル番号を指定するのは面倒なので、バッチを作成してみました。
logcat_cmd.bat 等、適当な名前で保存して、実行するだけで使用できます。
デバイスが1つしかないときは、無条件に adb logcat を実行し、
デバイスが2つ以上あるときは、リストから選択させるようにして、
adb -s <シリアル番号> logcat を実行するようにしています。
adb logcat を状況に合わせて実行するバッチ
@echo off REM 前提条件 REM コマンド・プロンプトが以下の2点を満たす状態で開始されること。 REM 「オプション」タブで「現在のコードページが『932』 REM 「フォント」タブで「フォント」が『MS ゴシック』 setlocal enabledelayedexpansion set CMD= set /A num = 0 REM xxxx device となっている行のみ表示 for /F "tokens=1-2" %%a in ('adb devices ^| findstr device ^| findstr /V "List of devices attached"') do ( set /A num = !num! + 1 echo !num!. %%a ) REM デバイスなし if %num% EQU 0 ( echo デバイスが存在しません。 pause goto :STOP ) else if %num% EQU 1 ( REM デバイス1つ set CMD=adb logcat chcp 65001 & !CMD! goto :STOP ) REM デバイス2つ以上 set /p select_num=adb logcat を実行するデバイスを選択して下さい(1-%num%) set /A num = 0 for /F "tokens=1-2" %%a in ('adb devices ^| findstr [a-zA-Z] ^| findstr /V "^List of devices"') do ( set /A num = !num! + 1 if !num! EQU %select_num% ( set CMD=adb -s %%a logcat chcp 65001 & !CMD! ) ) :STOP endlocal exit /b 0