답변:
다음 -s
명령을 사용하여 장치를 지정하십시오 (예 :
adb -s 7f1c864e shell
http://developer.android.com/tools/help/adb.html#directingcommands 도 참조하십시오.
adb -e shell
또는을 사용하십시오 adb emu <command>
. 그들은 것 이상의 에뮬레이터가 있다면 실패 할 것입니다 그리고 당신은 다시 떨어질해야합니다-s
-s
전에 옵션 을 사용해야합니다 shell
. 다른 방법으로이 작업을 수행 할 수없는 것은 매우 나쁜 사용자 경험입니다.
adb -d shell
(또는 adb -e shell
).
이 명령은 전체 ID를 입력하기에 너무 게으른 경우 대부분의 경우에 도움이됩니다.
에서 http://developer.android.com/tools/help/adb.html#commandsummary :
-d
-adb 명령을 연결된 USB 장치 에만 연결하십시오 . 둘 이상의 USB 장치가 연결된 경우 오류를 반환합니다.
-e
-adb 명령을 실행중인 유일한 에뮬레이터로 보내십시오 . 둘 이상의 에뮬레이터가 실행 중일 때 오류를 반환합니다.
-d
입니다 "장치" 및 -e
입니다 "에뮬레이터" . 그리고 당신이 이미 이것을 알아 냈다면 뒷면에 가볍게 두 드리십시오. ;)
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 kill-server
오프라인 에뮬레이터의 문제 해결
사용자 @janot
는 이미 위에서 언급했지만 최상의 솔루션을 필터링하는 데 시간이 걸렸습니다.
2 개의 광범위한 사용 사례가 있습니다.
1) 2 개의 하드웨어가 연결되어 있으며, 먼저 에뮬레이터이고 다른 하나는 장치입니다.
해결책 : adb -e shell....whatever-command
에뮬레이터 및 adb -d shell....whatever-command
장치.
2) USB / ADB-WiFi를 통해 n 개의 장치가 연결되어 있습니다 (모든 에뮬레이터 또는 전화 / 태블릿) :
해결책 : 1 단계 실행 adb devices
이 방법은 현재 USB 또는 ADBoverWiFI를 통해 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
에뮬레이터 중 하나에 APK를 설치하려면
먼저 장치 목록을 얻으십시오.
-> adb devices
List of devices attached
25sdfsfb3801745eg device
emulator-0954 device
그런 다음 -s
플래그 를 사용하여 에뮬레이터에 APK를 설치하십시오 .
-> adb -s "25sdfsfb3801745eg" install "C:\Users\joel.joel\Downloads\release.apk"
Performing Streamed Install
Success
이것이 누군가를 돕기를 바랍니다!
배쉬 만들기 (adb +)
adb devices | while read line
do
if [ ! "$line" = "" ] && [ `echo $line | awk '{print $2}'` = "device" ]
then
device=`echo $line | awk '{print $1}'`
echo "$device $@ ..."
adb -s $device $@
fi
함께 사용
adb + // + 명령
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} <command>
MacOS 터미널 에서이 코드를 테스트했지만 Git Bash 터미널의 창에서 사용할 수 있다고 생각합니다.
또한 .bash_profile
파일 에 환경 변수 및 Android SDK 경로를 구성 하십시오.
export ANDROID_HOME="/usr/local/opt/android-sdk/"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
export PATH="$ANDROID_HOME/tools:$PATH"
fxMenu
이며 fxValidatonNumberMenu
참조 용입니다. 오류 코드를 피하기 위해 주석을 달았습니다. 내 저장소에서 완전한 구현을 볼 수 있습니다 : github.com/equiman/hardhatmac/blob/master/tools.sh
adb -s 192.168.56.101:5555 shell