Как использовать оболочку ADB при подключении нескольких устройств? Ошибка с «ошибкой: более одного устройства и эмулятора»

$ adb --help 

 -s SERIAL use device with given serial (overrides $ANDROID_SERIAL) 

 $ adb devices List of devices attached emulator-5554 device 7f1c864e device 

 $ adb shell -s 7f1c864e error: more than one device and emulator 

?

Не следует вводить:

 adb -s 7f1c864e shell 

?
http://developer.android.com/tools/help/adb.html#directingcommands

adb -d shell (или adb -e shell если вы подключаетесь к эмулятору).

Эта команда поможет вам в большинстве случаев, если вам слишком ленив, чтобы ввести полный идентификатор.

Из http://developer.android.com/tools/help/adb.html#commandsummary :

-d – Направить команду adb на единственное подключенное устройство USB. Возвращает ошибку при подключении более одного USB-устройства.

-e – Направить команду adb на единственный запущенный эмулятор. Возвращает ошибку при запуске более одного эмулятора.

Другой альтернативой было бы установить переменную окружения ANDROID_SERIAL для соответствующего серийного номера, при условии, что вы используете Windows:

 set ANDROID_SERIAL="7f1c864e" echo %ANDROID_SERIAL% "7f1c864e" 

Тогда вы можете использовать adb.exe shell без каких-либо проблем.

Я нашел этот вопрос, увидев ошибку «более одного устройства», с двумя автономными телефонами, показывающими:

 C:\Program Files (x86)\Android\android-sdk\android-tools>adb devices List of devices attached SH436WM01785 offline SH436WM01785 offline SH436WM01785 sideload 

Если подключено только одно устройство, выполните следующие команды, чтобы избавиться от автономных подключений:

 adb kill-server adb devices 

Этот принцип будет выполнять большую часть работы для вас, показывая меню, когда есть несколько подключенных устройств:

 $ adb $(android-select-device) shell 1) 02783201431feeee device 3) emulator-5554 2) 3832380FA5F30000 device 4) emulator-5556 Select the device to use,  to quit: 

Чтобы избежать ввода, вы можете просто создать псевдоним, включающий выбор устройства, как описано здесь .

Выполнение команд adb на всех подключенных устройствах

Создайте bash (adb +)

 adb devices | while read line do if [ ! "$line" = "" ] && [ `echo $line | awk '{print $2}'` = "device" ] then device=`echo $line | awk '{print $1}'` echo "$device [email protected] ..." adb -s $device [email protected] fi 

сделать это с помощью

команда adb + // +

Для Windows, это быстрый пример 1 лайнера о том, как установить файл на нескольких устройствах

 FOR /F "skip=1" %x IN ('adb devices') DO start adb -s %x install -r myandroidapp.apk 

Если вы планируете включить это в пакетный файл, замените% x на %% x, как показано ниже

 FOR /F "skip=1" %%x IN ('adb devices') DO start adb -s %%x install -r myandroidapp.apk 

Создайте Bash (tools.sh), чтобы выбрать серию из устройств (или эмулятора):

 clear; echo "===================================================================================================="; echo " ADB DEVICES"; echo "===================================================================================================="; echo ""; adb_devices=( $(adb devices | grep -v devices | grep device | cut -f 1)#$(adb devices | grep -v devices | grep device | cut -f 2) ); if [ $((${#adb_devices[@]})) -eq "1" ] && [ "${adb_devices[0]}" == "#" ] then echo "No device found"; echo ""; echo "===================================================================================================="; device="" // Call Main Menu function fxMenu; else read -p "$( f=0 for dev in "${adb_devices[@]}"; do nm="$(echo ${dev} | cut -f1 -d#)"; tp="$(echo ${dev} | cut -f2 -d#)"; echo " $((++f)). ${nm} [${tp}]"; done echo ""; echo " 0. Quit" echo ""; echo "===================================================================================================="; echo ""; echo ' Please select a device: ' )" selection error="You think it's over just because I am dead. It's not over. The games have just begun."; // Call Validation Numbers fxValidationNumberMenu ${#adb_devices[@]} ${selection} "${error}" case "${selection}" in 0) // Call Main Menu function fxMenu; *) device="$(echo ${adb_devices[$((selection-1))]} | cut -f1 -d#)"; // Call Main Menu function fxMenu; esac fi 

Затем в другой опции можно использовать adb -s (глобальная опция -s использует устройство с заданным серийным номером, который переопределяет $ ANDROID_SERIAL):

 adb -s ${device}  

Я протестировал этот код на терминале MacOS, но я думаю, что он может использоваться на windowsх через терминал Git Bash.

Также помните, как настроить параметры среды и пути Android SDK в файле .bash_profile :

 export ANDROID_HOME="/usr/local/opt/android-sdk/" export PATH="$ANDROID_HOME/platform-tools:$PATH" export PATH="$ANDROID_HOME/tools:$PATH" 
  • Проверьте, присутствует ли SDCard, логическое значение всегда верно
  • Wait Firebase async извлекает данные на Android
  • О полноэкранном режиме и без заголовка из манифеста
  • android java.lang.IllegalStateException: Не удалось прочитать строку 0, col 0 из CursorWindow
  • Захват экрана в android
  • Получение фотографии из контакта
  • Ресурсы $ NotFoundException: ресурс не является Drawable (цвет или путь)?
  • Android listview с кнопками верхнего и нижнего колонтитула
  • Android: Можно ли отображать миниатюры видео?
  • я хочу показать уведомление в 8:00 ежедневно
  • Активность Android по блокировке блокировки по умолчанию
  • Давайте будем гением компьютера.