여러 장치가 연결되어 있을 때 ADB Shell을 사용하는 방법은 무엇입니까?"오류: 둘 이상의 장치 및 에뮬레이터"로 실패함
$ 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
을 합니다.-s
장치를 지정하는 명령 앞의 옵션, 예:
adb -s 7f1c864e shell
다중 에뮬레이터의 경우 다음과 같이 프로세스의 IP 및 포트를 ID로 사용합니다.
adb -s 192.168.232.2:5555 <command>
Android Emulator의 IP 주소를 가져오는 방법을 참조하십시오.
그러나 에뮬레이터가 하나만 있는 경우 다음을 시도합니다.
adb -e <command>
http://developer.android.com/tools/help/adb.html#directingcommands 도 참조하십시오.
adb -d shell
(또는)adb -e shell
).
이 명령은 대부분의 경우 전체 ID를 입력하기 귀찮은 경우에 도움이 됩니다.
http://developer.android.com/tools/help/adb.html#commandsummary 에서:
-d
유일하게 연결된 USB 장치에 adb 명령을 보냅니다.둘 이상의 USB 디바이스가 연결된 경우 오류를 반환합니다.
-e
실행 중인 에뮬레이터에만 adb 명령을 전달합니다.둘 이상의 에뮬레이터가 실행 중일 때 오류를 반환합니다.
Windows를 사용한다고 가정할 때 환경 변수 Android_SERIAL을 관련 일련 번호로 설정하는 방법도 있습니다.
set ANDROID_SERIAL=7f1c864e
echo %ANDROID_SERIAL%
"7f1c864e"
그러면 사용할 수 있습니다.adb.exe shell
아무 문제 없이
에뮬레이터 중 하나에 apk를 설치하려면:
먼저 장치 목록을 가져옵니다.
-> adb devices
List of devices attached
25sdfsfb3801745eg device
emulator-0954 device
때 apk는 apk입니다.-s
플래그:
-> adb -s "25sdfsfb3801745eg" install "C:\Users\joel.joel\Downloads\release.apk"
Performing Streamed Install
Success
중요하기 에, 여기: 서순가중요니다합추신다▁ps중.-s <id>
에 와야 .install
명령하지 않으면 작동하지 않습니다.
이것이 누군가에게 도움이 되기를 바랍니다!
오프라인 전화기 2대가 표시되는 '둘 이상의 장치' 오류를 보고 이 질문을 발견했습니다.
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 -s << emulator UDID >> shell
For Example:
adb -s emulator-5554 shell
https://developer.android.com/studio/command-line/adb#directingcommands 에 따름
테스트에 효과가 있었던 점:
UBUNTU BASH 터미널:
$ adb devices
List of devices attached
646269f0 device
8a928c2 device
$ export ANDROID_SERIAL=646269f0
$ echo $ANDROID_SERIAL
646269f0
$ adb reboot bootloader
WINDOWS 명령 프롬프트:
$ adb devices
List of devices attached
646269f0 device
8a928c2 device
$ set ANDROID_SERIAL=646269f0
$ echo $ANDROID_SERIAL$
646269f0
$ adb reboot bootloader
이렇게 하면 Android_SERIAL 장치만 연결된 것처럼 일반 명령과 스크립트를 사용할 수 있습니다.
또는 장치 일련 번호를 매번 언급할 수 있습니다.
$ adb -s 646269f0 shell
이 개요는 여러 장치가 연결되어 있을 때 메뉴를 표시하는 작업의 대부분을 수행합니다.
$ adb $(android-select-device) shell
1) 02783201431feeee device 3) emulator-5554
2) 3832380FA5F30000 device 4) emulator-5556
Select the device to use, <Q> to quit:
입력하지 않으려면 여기에 설명된 대로 장치 선택 항목을 포함하는 별칭을 만들면 됩니다.
사용자@janot
위에서 이미 언급했지만 최상의 솔루션을 필터링하는 데 시간이 걸렸습니다.
두 가지 광범위한 사용 사례가 있습니다.
두 개의 하드웨어가 연결되어 있습니다. 첫 번째 하드웨어는 에뮬레이터이고 다른 하드웨어는 장치입니다.
솔루션:adb -e shell....whatever-command
에뮬레이터 및adb -d shell....whatever-command
장치용.
USB/ADB-WiFi를 통해 연결된 장치 수(모든 에뮬레이터 또는 전화/태블릿):
솔루션:1단계) 실행adb devices
USB 또는 ADB over WiFI를 통해 현재 연결된 장치 목록이 표시됩니다.
2단계) 이제 실행adb -s <device-id/IP-address> shell....whatever-command
장치가 아무리 많더라도.
예
wifi ADB에 연결된 장치에서 앱 데이터를 지우려면 다음을 실행합니다.
adb -s 172.16.34.89:5555 shell pm clear com.package-id
USB에 연결된 장치에 연결된 앱 데이터를 지우려면 다음을 실행합니다.
adb -s 5210d21be2a5643d shell pm clear com.package-id
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(도구)를 생성합니다.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
(글로벌 옵션 - $ANDROID_SERIAL을 재정의하는 지정된 일련 번호의 장치 사용):
adb -s ${device} <command>
이 코드는 맥OS 단말기에서 테스트해봤는데 깃배시 단말기 건너편에 있는 윈도우에서도 사용할 수 있을 것 같습니다.
또한 환경 변수 및 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"
이를 사용하여 특정 장치를 연결할 수 있습니다.
* adb devices
--------------
List of devices attached
9f91cc67 offline
emulator-5558 device
예: 첫 번째 장치 "9f91cc67"에 연결하고 싶습니다.
* adb -s 9f91cc67 tcpip 8080
---------------------------
restarting in TCP mode port: 8080
그리고나서
* adb -s 9f91cc67 connect 192.168.1.44:8080
----------------------------------------
connected to 192.168.1.44:8080
아마도 이것은 누군가를 도울 것입니다.
여기 제가 직접 만든 셸 스크립트가 있습니다.
#! /bin/sh
for device in `adb devices | awk '{print $1}'`; do
if [ ! "$device" = "" ] && [ ! "$device" = "List" ]
then
echo " "
echo "adb -s $device $@"
echo "------------------------------------------------------"
adb -s $device $@
fi
done
편의를 위해 실행 구성을 만들 수 있습니다. 실행 구성은 다음과 같습니다.ANDROID_SERIAL
:
어디서adb_wifi.bat
유사해 보일 수 있음(위치 인수만)%1%
그리고."$1"
다를 수 있음):
adb tcpip 5555
adb connect %1%:5555
진전은, 그것입니다.adb
전류를 흡수합니다.ANDROID_SERIAL
.
셸 스크립트에서도ANDROID_SERIAL=xyz adb shell
작동해야 합니다.
이 문장이 반드시 틀린 것은 아닙니다.
-s SERIAL use device with given serial (overrides $ANDROID_SERIAL)
하지만 누군가는 그냥 바꿀 수 있습니다.ANDROID_SERIAL
실행 직전adb
지휘권
달걀도 넣을 수 있습니다. ANDROID_SERIAL=192.168.2.60:5555
대상 IP를 정의합니다.adb
.
이는 또한 실행을 허용합니다.adb shell
명령이 "스크립트 매개 변수"로 전달됩니다.
언급URL : https://stackoverflow.com/questions/14654718/how-to-use-adb-shell-when-multiple-devices-are-connected-fails-with-error-mor
'programing' 카테고리의 다른 글
파이프 동결 대 파이프 리스트 (0) | 2023.06.17 |
---|---|
mocha test vue 템플릿이지만 babel이 'computed:{...mapGetters()}'을(를) 분석할 수 없습니다. (0) | 2023.06.17 |
열에서 쉼표로 구분된 문자열을 별도의 행으로 분할 (0) | 2023.06.17 |
IntegrinentAttributes & IntegrinentClassAttributesReact.js 유형에는 할당할 수 없습니다. (0) | 2023.06.17 |
Python 요청 및 영구 세션 (0) | 2023.06.17 |