前言
当前 PC 连着多个安卓设备时,当超出了 adb 所支持的设备数,步骤如下:
- adb devices 列出你当前的设备列表,然后拷贝你要安装的设备 Device Id;使用 adb -s deviceId
- install …. 来进行 APK 安装
error: more than one device/emulator
adb: error: failed to get feature set: more than one device/emulator
- waiting for device -
error: more than one device/emulator
效果图
#adb 快捷命令
function adbConnect(){
echo "Your connect is 192.168.$1" # 这个 $1 必须要参考底下命令的下达
adb connect 192.168.$1
}
function adbDisconnect(){adb disconnect}
function adbShell(){adb shell}
function devices(){adb devices}
# 获取安卓设备数量
function getAdbDevicesCount(){
no_dev=2 #没有设备的总行数 第一行: List of devices attached 第二行 空
line="`adb devices | wc -l`"
# echo "$line"
echo $(($line-$no_dev))
}
#获取自定义格式设备名称 参数 1: adb devices 设备 ID index
function getFmtDeviceName(){if [ -n "$1"]; then
line=$1
let "line++" #跳过 1 行
deviceId="`adb devices | sed -n"${line}p"| awk'{printf $1"\n"}'`" # name="`adb devices | sed -n"2p;${line}p"| awk'{printf NR "." $1"\n"}'`" #简单列出设备 ID
manufacturer="`adb -s $deviceId shell getprop ro.product.manufacturer`"
model="`adb -s $deviceId shell getprop ro.product.model`"
version="`adb -s $deviceId shell getprop ro.build.version.release`"
sdk="`adb -s $deviceId shell getprop ro.build.version.sdk`"
name="${manufacturer} ${model} Android ${version} API ${sdk} Serial: ${deviceId}"
# 去除某些设备后面携带回车符
name=`echo ${name} | tr -d '\r'`
echo ${name}
else
echo "requires an argument"
fi
}
# 列出所有设备
function listFmtDevices(){
count=`getAdbDevicesCount`
index=1
while(($index<=count))
do
name=`getFmtDeviceName ${index}`
echo "${index}. ${name}"
let "index++"
done
}
# 获取设备 ID 参数 1: adb devices 设备 ID index
function getFmtDeviceId(){if [ -n "$1"]; then
line=$1
let "line++" #跳过 1 行
deviceId="`adb devices | sed -n"${line}p"| awk'{printf $1"\n"}'`"
# 去除某些设备后面携带回车符
deviceId=`echo ${deviceId} | tr -d '\r'`
echo ${deviceId}
else
echo "requires an argument"
fi
}
# 安装 apk
function apk(){if [ -n "$1"]; then
count=`getAdbDevicesCount`
one_dev=1
if [$count -eq $one_dev]
then
# 单设备
name=`getFmtDeviceName 1`
echo "install apk to devices: ${name}"
adb install -r $1
elif [$count -gt $one_dev]
then
# 多设备
if [-n "$2"]; then
# 带设备 index
index=$2
deviceId=`getFmtDeviceId ${index}`
name=`getFmtDeviceName ${index}`
echo "install apk to devices: $name"
adb -s $deviceId install -r $1
else
# 带 apk 文件路径
echo "install apk to which devices?"
listFmtDevices
read -p "Enter:" index
apk $1 $index
fi
else
echo "no devices"
fi
else
echo "apk requires an apkPath argument"
fi
}
# 卸载 apk
function uapk(){if [ -n "$1"]; then
count=`getAdbDevicesCount`
one_dev=1
if [$count -eq $one_dev]
then
# 单设备
name=`getFmtDeviceName 1`
echo "uninstall apk on $name"
adb uninstall $1
elif [$count -gt $one_dev]
then
# 多设备
if [-n "$2"]; then
# 带设备 index
index=$2
deviceId=`getFmtDeviceId ${index}`
name=`getFmtDeviceName ${index}`
echo "uninstall apk on devices: $name"
adb -s $deviceId uninstall $1
else
# 带 apk 文件路径
echo "uninstall apk on which devices?"
listFmtDevices
read -p "Enter:" index
uapk $1 $index
fi
else
echo "no devices"
fi
else
echo "uapk requires an pkg argument"
fi
}
# 进入 adb shell 环境
function as(){
count=`getAdbDevicesCount`
one_dev=1
if [$count -eq $one_dev]
then
# 单设备
name=`getFmtDeviceName 1`
echo "${name} Last login: `date`"
adb shell
elif [$count -gt $one_dev]
then
# 多设备
if [-n "$1"]; then
# 带设备 index
index=$1
deviceId=`getFmtDeviceId ${index}`
name=`getFmtDeviceName ${index}`
echo "${name} Last login: `date`"
adb -s $deviceId shell
else
# 不带设备 index
echo "enter shell which devices?"
listFmtDevices
read -p "Enter:" index
as $index
fi
else
echo "no devices"
fi
}