$ 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 --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 -d shell(或Adb -e shell)。
如果您懒得输入完整的ID,这个命令在大多数情况下都有帮助。
从http://developer.android.com/tools/help/adb.html # commandsummary:
-d -将adb命令直接到唯一连接的USB设备。当连接多个USB设备时返回错误。 -e -将adb命令直接指向唯一正在运行的模拟器。当多个模拟器正在运行时返回一个错误。
其他回答
用户@janot已经在上面提到了这一点,但是这花了我一些时间来筛选最佳解决方案。
有两个广泛的用例: 1) 2个硬件连接,第一个是模拟器,另一个是设备。 处理步骤:adb -e shell....模拟器和adb -d shell....设备的任何命令。
2) n个设备(所有模拟器或手机/平板电脑)通过USB/ADB-WiFi连接: 解决方案: 这将给你当前连接的设备列表(通过USB或ADBoverWiFI) Step2)现在运行adb -s <device-id/IP-address> shell....whatever-命令 不管你有多少设备。
在连接wifi的设备上清除应用程序数据的示例ADB I将执行: Adb -s 172.16.34.89:5555 shell PM清除com.package-id
清除连接到usb设备上的应用程序数据,我将执行: Adb -s 5210d21be2a5643d shell PM清除com.package-id
为了方便起见,我们可以创建运行配置,设置ANDROID_SERIAL:
adb_wifi.bat可能看起来很像(只有位置参数%1%和“$1”可能不同):
adb tcpip 5555
adb connect %1%:5555
改进之处在于,adb将接收当前的ANDROID_SERIAL。 在shell脚本也ANDROID_SERIAL=xyz adb shell应该工作。
这种说法不一定是错误的:
-s SERIAL use device with given serial (overrides $ANDROID_SERIAL)
但是也可以在运行adb命令之前更改ANDROID_SERIAL。
我们甚至可以设置eg。ANDROID_SERIAL=192.168.2.60:5555定义adb的目标IP。 这也允许运行adb shell,命令被作为“脚本参数”传递。
在看到“不止一个设备”错误后,我发现了这个问题,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
下面是我为自己编写的shell脚本:
#! /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
在任何特定设备上运行shell的最佳方式是使用:
adb -s << emulator UDID >> shell
For Example:
adb -s emulator-5554 shell