可显示Android设备选择列表,并进入指定Android设备Console的Shell脚本

简介:       如果PC上连接多部Android设备(包括Android模拟器),在进入Console时还需要使用adb -s deviceid shell。

      如果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与驱动开发》 提供。

目录
相关文章
|
6月前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
529 1
|
6月前
|
安全 Shell Android开发
Android系统 init.rc开机执行shell脚本
Android系统 init.rc开机执行shell脚本
1037 0
|
Shell Android开发 C++
利用Wrap Shell Script定位Android Native内存泄漏
## 前提条件 - Android版本为8.0以上 ## 环境配置 - cd到/src/main目录下,新建shell目录,同时shell目录下配置与libs目录下相同平台的目录,如下app下的层级结构,可看到shell/lib下具有与libs下相同的平台目录结构 ```c ── AndroidManifest.xml ├── java ├── libs │   ├── a
3580 0
|
5月前
|
Shell 开发工具 Android开发
|
6月前
|
存储 安全 Shell
Android系统 adb shell auth授权使用
Android系统 adb shell auth授权使用
441 2
|
存储 Shell Android开发
【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )
【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )
530 0
【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )
|
Java Shell Linux
Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息
Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息
1036 0
|
Shell Android开发
adb shell 启动,停止 android 应用程序
一、adb启动 应用程序 (1)查看app包名: 进入android操作系统 adb shell 在root@android:/ # 后边,输入 cd data/data 然后输入ls 这样就能看见android系统上安装的安装包 包名: 例如: cn.
2380 0
|
Shell Android开发
Android adb shell里面ls提示opendir failed, Permission denied
错误信息: 127|shell@android:/ $ cd /data cd /data shell@android:/data $ ls ls opendir failed, Permission denied 解决方法: 解决方法.
2575 0
|
Shell Android开发 Windows
17.Linux shell编程(通过Makefile看Android.mk文件)
(创建于2018/2/11 上午8:12:32) Makefile文件 //递归展开式,可以引用还没有定义的变量,展开是引用时展开 1 str1=$(str2) ...
1517 0