欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android adb shell命令详解及实例

程序员文章站 2022-03-27 21:48:27
Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行填补。认识使用android adb命令详解实例手机执行Shell命令在手机中执行Shell命令:1) 每次都加上adb shell来进行命令的发送与执行adb shell 2)获取模拟器所有包名adb shell pm list packages3...

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.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 是当前空闲内存。

更多硬件与系统属性

设备的更多硬件与系统属性可以通过如下命令查看:

  1. 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 用法大全

         使用android adb命令详解实例

原文:  Android adb shell命令详解及实例

本文地址:https://blog.csdn.net/zcp528/article/details/107480244