Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行填补。
认识使用android adb命令详解实例
手机执行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.pngadb 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 stopadb shell start
15)设备关机以及重启
adb rebootadb shutdown
16)设置手机IMEI/IMSI/手机号/SIM卡序列号(1.7之后版本)
adb shell setprop phone.imei 865166023949731adb shell setprop phone.imsi 460000000000000adb shell setprop phone.linenum 13800000000adb 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 batteryCurrent Battery Service state:AC powered: trueUSB powered: falseWireless powered: falsestatus: 1health: 1present: falselevel: 100scale: 100voltage: 0temperature: 295technology:
其中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=0init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731deferred=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 = GSMDevice ID = 860955027785041
其中的 Device ID 就是 IMEI。
而在 Android 5.0 及以上版本里这个命令输出为空,得通过其它方式获取了(需要 root 权限):
adb shellsuservice call iphonesubinfo 1
输出示例:
service call iphonesubinfo 1Result: Parcel(0x00000000: 00000000 0000000f 00360038 00310035 '........8.6.5.1.'0x00000010: 00360036 0030 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.sdkSDK 版本ro.build.version.releaseAndroid 系统版本ro.build.version.security_patchAndroid 安全补丁程序级别ro.product.model型号ro.product.brand品牌ro.product.name设备名ro.product.board处理器型号ro.product.cpu.abilistCPU 支持的 abi 列表persist.sys.isUsbOtgEnabled是否支持 OTGdalvik.vm.heapsize每个应用程序的内存上限ro.sf.lcd_density屏幕密度
查看连接过的 WiFi 密码
注:需要 root 权限。
命令:
adb shellsucat /data/misc/wifi/*.conf
输出示例:
network={ssid="TP-LINK_9DFC"scan_ssid=1psk="1122334455"key_mgmt=WPA-PSKgroup=CCMP TKIPauth_alg=OPENsim_num=1priority=13893}network={ssid="TP-LINK_F11E"psk="5544332211"key_mgmt=WPA-PSKsim_num=1priority=17293}
ssid
即为我们在 WLAN 设置里看到的名称,psk
为密码,key_mgmt
为安全加密方式。
设置系统日期和时间
注:需要 root 权限。
命令:
adb shellsudate -s 1030.161600
表示将系统日期和时间更改为 年 10 月 30 日 16 点 16 分 00 秒。
重启手机
adb reboot
检测设备是否已 root
adb shellsu
此时命令行提示符是$
则表示没有 root 权限,是#
则表示已 root。
开启/关闭 WiFi
注:需要 root 权限。
有时需要控制设备的 WiFi 状态,可以用以下指令完成。
开启 WiFi:
adb rootadb shell svc wifi enable
关闭 WiFi:
adb rootadb shell svc wifi disable
若执行成功,输出为空;若未取得 root 权限执行此命令,将执行失败,输出Killed
。
查看进程
adb shell ps
返回:
USERPID PPID VSIZE RSSWCHAN PC NAMEroot109412 980 00000000 08073a60 S /initroot200000000000 00000000 S kthreaddroot320000000000 00000000 S ksoftirqd/0root520000000000 00000000 S kworker/0:0Hroot720000000000 00000000 S rcu_preemptroot820000000000 00000000 S rcu_schedroot920000000000 00000000 S rcu_bhroot10 20000000000 00000000 S rcuop/0root11 20000000000 00000000 S rcuos/0root12 20000000000 00000000 S rcuob/0root13 20000000000 00000000 S migration/0root14 20000000000 00000000 S watchdog/0root15 20000000000 00000000 S watchdog/1root16 20000000000 00000000 S migration/1root17 20000000000 00000000 S ksoftirqd/1root18 20000000000 00000000 S kworker/1:0root19 20000000000 00000000 S kworker/1:0H
列名 含义
USER 所属用户
PID 进程 ID
PPID 父进程 ID
NAME 进程名
查看实时资源占用情况
adb shell top
输出返回:
PID PR CPU% S #THRVSSRSS PCY UIDName7 1 0% S10K0K fg rootrcu_preempt1530 0 0% S 75 1633276K 104552K fg system system_server3 0 0% S10K0K fg rootksoftirqd/05 0 0% S10K0K fg rootkworker/0:0H8 0 0% S10K0K fg rootrcu_sched9 0 0% S10K0K fg rootrcu_bh10 1 0% S10K0K fg rootrcuop/011 0 0% S10K0K fg rootrcuos/012 0 0% S10K0K fg rootrcuob/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 用法大全
使用android adb命令详解实例
原文: Android adb shell命令详解及实例