Android adb shell命令详解及实例
Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行填补。
手机执行Shell命令
在手机中执行Shell命令:
1) 每次都加上adb shell来进行命令的发送与执行
adb shell <command>
2)获取模拟器所有包名
adb shell pm list packages
3)获取模拟器所有包名并且包括APK路径
adb shell pm list packages -f
4)获取包名对应的APK路径
adb shell pm path packageName
5)清理应用数据
adb shell pm clear packageName
6)启动应用
adb shell am start -n 包名/Activity类名
例子:启动应用宝:
adb shell am start -n com.tencent.android.qqdownloader/com.tencent.assistant.activity.SplashActivity
指定模拟器启动动应用宝:
adb -s 127.0.0.1:5555 shell am start -n com.tencent.android.qqdownloader/com.tencent.assistant.activity.SplashActivity
7)关闭应用
adb shell am force-stop 包名
8)模拟输入
adb shell input text 字符串(不支持中文)
9)模拟按键
adb shell input keyevent <keycode>键值
10)模拟鼠标点击
adb shell input tap X Y
11)模拟鼠标滑动
adb shell input swipe X1 Y1 X2 Y2
12)截屏
adb shell screencap -p /sdcard/sc.png adb shell screencap -p /sdcard/text.png
可以使用 adb shell screencap -h
查看 screencap
命令的帮助信息,下面是两个有意义的参数及含义:
参数 含义 -p 指定保存文件为 png 格式 -d display-id 指定截图的显示屏编号(有多显示屏的情况下) 实测如果指定文件名以 .png 结尾时可以省略 -p 参数;否则需要使用 -p 参数。如果不指定文件名,截图文件的内容将直接输出到 stdout。
13)屏幕录像
例如,屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4,录制屏幕以 mp4 格式保存到 /sdcard:
adb shell screenrecord /sdcard/demo.mp4
需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。
可以使用 adb shell screenrecord --help
查看 screenrecord
命令的帮助信息,下面是常见参数及含义:
参数 含义 --size WIDTHxHEIGHT 视频的尺寸,比如 1280x720,默认是屏幕分辨率。 --bit-rate RATE 视频的比特率,默认是 4Mbps。 --time-limit TIME 录制时长,单位秒。 --verbose 输出更多信息。
14)关闭设备请求,开启设备
adb shell stop adb shell start
15)设备关机以及重启
adb reboot adb shutdown
16)设置手机IMEI/IMSI/手机号/SIM卡序列号(1.7之后版本)
adb shell setprop phone.imei 865166023949731 adb shell setprop phone.imsi 460000000000000 adb shell setprop phone.linenum 13800000000 adb shell setprop phone.simserial 89860000000000000000
16)滑动解锁
如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。
命令(参数以机型 Nexus 5,向上滑动手势解锁举例):
adb shell input swipe 300 1000 300 500
参数 300 1000 300 500
分别表示起 始点x坐标
起始点y坐标
结束点x坐标
结束点y坐标
。
17)查看内核日志
adb shell dmesg
查看设备信息
1)型号
adb shell getprop ro.product.model
2)电池状况
adb shell dumpsys battery
返回:
> adb shell dumpsys battery
Current Battery Service state:
AC powered: true
USB powered: false
Wireless powered: false
status: 1
health: 1
present: false
level: 100
scale: 100
voltage: 0
temperature: 295
technology:
其中 scale
代表最大电量,level
代表当前电量。上面的输出表示还剩下 100%
的电量。
3)屏幕分辨率
adb shell wm size
输出示例:
Physical size: 1080x1920
该设备屏幕分辨率为 1080px * 1920px。
4)屏幕密度
adb shell wm density
输出示例:
Physical density: 420
该设备屏幕密度为 420dpi。
5)显示屏参
adb shell dumpsys window displays
输出示例:
WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays) Display: mDisplayId=0 init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731 deferred=false layoutNeeded=false
其中 mDisplayId 为 显示屏编号,init 是初始分辨率和屏幕密度,app 的高度比 init 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp。
6)android_id
adb shell settings get secure android_id
输出示例:
51b6be48bac8c569
7)IMEI
在 Android 4.4 及以下版本可通过如下命令获取 IMEI:
adb shell dumpsys iphonesubinfo
输出示例:
Phone Subscriber Info: Phone Type = GSM Device ID = 860955027785041
其中的 Device ID 就是 IMEI。
而在 Android 5.0 及以上版本里这个命令输出为空,得通过其它方式获取了(需要 root 权限):
adb shell su service call iphonesubinfo 1
输出示例:
service call iphonesubinfo 1
Result: Parcel(
0x00000000: 00000000 0000000f 00360038 00310035 '........8.6.5.1.'
0x00000010: 00360036 00320030 00380039 00330032 '6.6.0.2.9.8.2.3.'
0x00000020: 00350031 00000033 '1.5.3... ')
把里面的有效内容提取出来就是 IMEI 了,比如这里的是 865166029823153
。
参考:adb shell dumpsys iphonesubinfo not working since Android 5.0 Lollipop
8)Android 系统版本
adb shell getprop ro.build.version.release
9)Mac 地址
adb shell cat /sys/class/net/wlan0/address
返回:
f8:a9:d0:17:42:4d
9)CPU 信息
adb shell cat /proc/cpuinfo
10)内存信息
adb shell cat /proc/meminfo
其中,MemTotal 就是设备的总内存,MemFree 是当前空闲内存。
更多硬件与系统属性
设备的更多硬件与系统属性可以通过如下命令查看:
-
adb shell cat /system/build.prop
这会输出很多信息,包括前面几个小节提到的「型号」和「Android 系统版本」等。
输出里还包括一些其它有用的信息,它们也可通过
adb shell getprop <属性名> 命令单独查看
列举部分返回属性:
属性名 含义 ro.build.version.sdk SDK 版本 ro.build.version.release Android 系统版本 ro.build.version.security_patch Android 安全补丁程序级别 ro.product.model 型号 ro.product.brand 品牌 ro.product.name 设备名 ro.product.board 处理器型号 ro.product.cpu.abilist CPU 支持的 abi 列表 persist.sys.isUsbOtgEnabled 是否支持 OTG dalvik.vm.heapsize 每个应用程序的内存上限 ro.sf.lcd_density 屏幕密度
查看连接过的 WiFi 密码
注:需要 root 权限。
命令:
adb shell su cat /data/misc/wifi/*.conf
输出示例:
network={
ssid="TP-LINK_9DFC"
scan_ssid=1
psk="1122334455"
key_mgmt=WPA-PSK
group=CCMP TKIP
auth_alg=OPEN
sim_num=1
priority=13893
}
network={
ssid="TP-LINK_F11E"
psk="5544332211"
key_mgmt=WPA-PSK
sim_num=1
priority=17293
}
ssid
即为我们在 WLAN 设置里看到的名称,psk
为密码,key_mgmt
为安全加密方式。
设置系统日期和时间
注:需要 root 权限。
命令:
adb shell su date -s 20171030.161600
表示将系统日期和时间更改为 2017 年 10 月 30 日 16 点 16 分 00 秒。
重启手机
adb reboot
检测设备是否已 root
adb shell su
此时命令行提示符是 $
则表示没有 root 权限,是 #
则表示已 root。
开启/关闭 WiFi
注:需要 root 权限。
有时需要控制设备的 WiFi 状态,可以用以下指令完成。
开启 WiFi:
adb root adb shell svc wifi enable
关闭 WiFi:
adb root adb shell svc wifi disable
若执行成功,输出为空;若未取得 root 权限执行此命令,将执行失败,输出 Killed
。
查看进程
adb shell ps
返回:
USER PID PPID VSIZE RSS WCHAN PC NAME root 1 0 9412 980 00000000 08073a60 S /init root 2 0 0 0 00000000 00000000 S kthreadd root 3 2 0 0 00000000 00000000 S ksoftirqd/0 root 5 2 0 0 00000000 00000000 S kworker/0:0H root 7 2 0 0 00000000 00000000 S rcu_preempt root 8 2 0 0 00000000 00000000 S rcu_sched root 9 2 0 0 00000000 00000000 S rcu_bh root 10 2 0 0 00000000 00000000 S rcuop/0 root 11 2 0 0 00000000 00000000 S rcuos/0 root 12 2 0 0 00000000 00000000 S rcuob/0 root 13 2 0 0 00000000 00000000 S migration/0 root 14 2 0 0 00000000 00000000 S watchdog/0 root 15 2 0 0 00000000 00000000 S watchdog/1 root 16 2 0 0 00000000 00000000 S migration/1 root 17 2 0 0 00000000 00000000 S ksoftirqd/1 root 18 2 0 0 00000000 00000000 S kworker/1:0 root 19 2 0 0 00000000 00000000 S kworker/1:0H
列名 含义
USER 所属用户
PID 进程 ID
PPID 父进程 ID
NAME 进程名
查看实时资源占用情况
adb shell top
输出返回:
PID PR CPU% S #THR VSS RSS PCY UID Name 7 1 0% S 1 0K 0K fg root rcu_preempt 1530 0 0% S 75 1633276K 104552K fg system system_server 3 0 0% S 1 0K 0K fg root ksoftirqd/0 5 0 0% S 1 0K 0K fg root kworker/0:0H 8 0 0% S 1 0K 0K fg root rcu_sched 9 0 0% S 1 0K 0K fg root rcu_bh 10 1 0% S 1 0K 0K fg root rcuop/0 11 0 0% S 1 0K 0K fg root rcuos/0 12 0 0% S 1 0K 0K fg root rcuob/0
列名 含义
PID 进程 ID
PR 优先级
CPU% 当前瞬间占用 CPU 百分比
S 进程状态(R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
#THR 线程数
VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PCY 调度策略优先级,SP_BACKGROUND/SPFOREGROUND
UID 进程所有者的用户 ID
NAME 进程名
其他
命令 功能 cat 显示文件内容 cd 切换目录 chmod 改变文件的存取模式/访问权限 df 查看磁盘空间使用情况 grep 过滤输出 kill 杀死指定 PID 的进程 ls 列举目录内容 mount 挂载目录的查看和管理 mv 移动或重命名文件 ps 查看正在运行的进程 rm 删除文件 top 查看进程的资源占用情况
参考:ADB Usage Complete / ADB 用法大全
本文地址:https://blog.csdn.net/zcp528/article/details/107480244