如果PC上连接多部Android设备(包括Android模拟器),在进入Console时还需要使用adb -s deviceid shell。比较麻烦,本文为此编写了一个Shell脚本文件(需要在Linux或OS X下才能使用,windows下需要用bat或cmd从新编写)。
基本思路时先用adb devices命令扫描有多少Android设备连接到PC上,然后从返回值中截取设备名称,并显示一个菜单。最后用户可以选择菜单项前面的序号进入指定的Android设备。无需再输入deviceid。
效果如下图所示。
源代码如下:
common.sh文件
selected_device="" # "":无可用Android设备 function find_devices() { device_list=$(adb devices) if [ "${device_list:0:4}" != "List" ]; then device_list=$(adb devices) # 获取设备列表 if [ "${device_list:0:4}" != "List" ]; then exit fi fi value=$(echo $device_list | cut -d' ' -f5) if [ "$value" == "" ]; then # 没有可用设备 echo "无可用Android设备" else selected_device=$value # 假设只有1个设备 value=$(echo $device_list | cut -d' ' -f7) # 多个设备 if [ "$value" != "" ]; then i=5 index=1 value="~~~" echo "可用设备列表" while [ "" == "" ] do # 开始显示设备菜单 value=$(echo $device_list | cut -d' ' -f$i) let "i=$i+2" if [ "$value" == "" ]; then break; fi echo "$index: $value" let "index=$index+1" done read -p "您想选择哪个Android设备?请输入序号(1):" number if [ "$number" == "" ]; then number=1 fi let "number=3 + $number * 2" selected_device=$(echo $device_list | cut -d' ' -f$number) # 根据用户选择的设备需要获取设备标识 fi fi }
shell.sh
source common.sh find_devices if [ "$selected_device" != "" ]; then adb -s $selected_device shell $1 # 根据用户选择的设备进入Console fi
需要将shell.sh和common.sh放到同一个目录,然后执行shell.sh脚本文件即可(不要忘记使用chmod命令设置其可执行权限)
本脚本由 《Android深入探索卷1:HAL与驱动开发》 提供。