文章目录
-
- ADB概念
- ADB的工作原理
- adb常用指令
-
- adb 安装,卸载 程序
- adb(pull,push)发送文件
- adb屏幕截图
-
- 录制屏幕
- 查看连接过的 WiFi 密码
- 设置系统日期和时间
- 开启/关闭 WiFi
- 用 Monkey 进行压力测试
- adb logcat:查看和跟踪系统日志缓冲区的信息
- adb网络连接
- adb端口转发
- adb进入fastboot
- adb shell指令
-
- 显示手机当前目录的所有内容
- 查看进程
- 查看实时资源占用情况
- 获取手机Android系统各个分区的相关信息
- 查看设备 android_id
- adb自动化获取手机信息
- adb shell dumpsys
-
- 查看电池电量的相关信息
- 内存监控脚本,适用于监控内存泄漏
- 查看无限网络信息
- 查看电源管理相关信息
- 查看当前活动的包的信息
- 显示屏参数
- IMEI
- 查看电话相关信息
- CPU使用情况
- adb shell am
- adb shell pm
- adb shell wm
-
- 屏幕分辩率
- 屏幕密度
- 修改分辨率
- 恢复原分辨率命令
- 修改屏幕密度
- 恢复原屏幕密度命令
- 修改显示区域
- 恢复原显示区域命令
- 修改关闭 USB 调试模式
- 设置adb无线调试开机后自启用
- adb shell input
- 查看设备 IP 地址
- 查看设备 Mac 地址
- 查看设备更多硬件与系统属性
- 安全相关命令
-
- 启用/禁用 SELinux
- 启用/禁用 dm_verity
ADB概念
ADB,全名Android Debug Bridge,是Android提供的一个通用的调试工具,是一个C/S架构的命令行工具,通过这个工具,使得我们的PC能够和Android设备来进行通信。
ADB的工作原理
adb包含三个部分:
a. Client端:运行在开发机器中,用来发送adb命令,比如电脑
b. Daemon守护进程:运行在调试设备,比如手机、模拟器中,用来接收并执行adb命令
c. Server端:运行在开发机器中,用来管理Client端和手机端Daemon之间的通信。
当在电脑命令行窗口中输入adb 命令时,会先执行adb客户端,客户端拿到命令之后,会发送给adb服务端,server再将命令传给Daemon,最后在手机上执行。假如在手机上安装一个应用,会有一个返回信息,会将信息传递给adb服务器,adb 在给客户端,最后显示在命令行。
总结:
a.client端将命令发送给server端
b.server端会将命令发送给daemon端
c.daemon端进行执行
d.将执行结果,返回给server端
e.server端将结果再返回给client端
adb常用指令
验证adb 是否安装成功
adb help
或者
adb --help
会出现adb的版本和帮助信息
查看adb版本
adb version
重启手机
重启到 Recovery 模式
adb reboot recovery从 Recovery 重启到 Android
adb reboot重启到 Fastboot 模式
adb reboot bootloader
adb devices : 查看电脑是否连接设备
#查看连接的设备
adb devices
或者
adb devices -l#查看设备连接状态
adb get-state
使用该指令将返回设备状态信息,该状态信息包含三种
- devices状态:表示移动设备或者模拟器已经连接到adb服务器上
- offline状态:表示移动设备或者模拟器没有连接到adb服务器或者没有响应
- no devices状态:表示没有设备或者模拟器连接
以 root 权限运行 adbd
adb root
开启或者关闭服务
adb start-server:开启adb服务
adb kill-server:关掉adb服务
指定 adb server 的网络端口
adb -P <port> start-server
ADB的默认端口为 5037
adb 安装,卸载 程序
adb install :安装
第一种情况:当只有一台设备时
a. adb install apk路径
b. adb install -r :覆盖原来安装的软件,并保留数据
c. adb install-multiple demo1.apk demo2.apk
d. adb install -t demo1.apk : 如果在安装中,遇到Failure [INSTALL_FAILED_TEST_ONLY installPackageLI],则使用该命令
e. adb install -d demo.apk :允许版本代码升级
f. adb install -g demo.apk :授权所有运行时权限
第二种情况:当有多台设备时,使用-s 序列号 进行指定设备
adb -s 序列号 install apk路径
adb uninstall :卸载
#packagename是应用包名
#包名问开发或自己去查询
adb uninstall [-k]<packagename>-k表示卸载应用但保留数据和缓存文件adb unstall demo.apk
卸载设备中的应用,并希望保留配置和缓存文件
adb -s 序列号 shell pm uninstall -k 包名
adb(pull,push)发送文件
adb pull : 将移动设备中的文件传送到PC上
adb pull 移动设备路径 PC路径
adb push :将PC中的文件传送到移动设备端
adb push PC路径 移动设备路径
adb push PC路径 /sdcard/
adb屏幕截图
截图保存到电脑
adb exec-out screencap -p > sc.png
如果 adb 版本较老,无法使用 exec-out
命令,这时候建议更新 adb 版本。无法更新的话可以使用以下麻烦点的办法:
先截图保存到设备里:
adb shell screencap -p /sdcard/sc.png
然后将 png 文件导出到电脑
adb pull /sdcard/sc.png C:\Users\Administrator\Desktop
可以使用 adb shell screencap -h
查看 screencap
命令的帮助信息,下面是两个有意义的参数及含义:
参数 | 含义 |
---|---|
-p | 指定保存文件为 png 格式 |
-d display-id | 指定截图的显示屏编号(有多显示屏的情况下) |
实测如果指定文件名以 .png
结尾时可以省略 -p
参数;否则需要使用 -p
参数。如果不指定文件名,截图文件的内容将直接输出到 stdout。
另外一种一行命令截图并保存到电脑的方法:
Linux 和 Windows
adb shell screencap -p | sed "s/\r$//" > sc.png
Mac OS X
adb shell screencap -p | gsed "s/\r$//" > sc.png
这个方法需要用到 gnu sed
命令,在 Linux 下直接就有,在 Windows 下 Git 安装目录的 bin 文件夹下也有。如果确实找不到该命令,可以下载 sed for Windows 并将 sed.exe 所在文件夹添加到 PATH 环境变量里。
而在 Mac 下使用系统自带的 sed 命令会报错:
sed: RE error: illegal byte sequence
需要安装 gnu-sed,然后使用 gsed 命令:
brew install gnu-sed
录制屏幕
录制屏幕以 mp4 格式保存到 /sdcard:
adb shell screenrecord /sdcard/filename.mp4
需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。
如果需要导出到电脑:
adb pull /sdcard/filename.mp4
可以使用 adb shell screenrecord --help
查看 screenrecord
命令的帮助信息,下面是常见参数及含义:
参数 | 含义 |
---|---|
–size WIDTHxHEIGHT | 视频的尺寸,比如 1280×720,默认是屏幕分辨率。 |
–bit-rate RATE | 视频的比特率,默认是 4Mbps。 |
–time-limit TIME | 录制时长,单位秒。 |
–verbose | 输出更多信息。 |
查看连接过的 WiFi 密码
注:需要 root 权限。
adb shell
su
cat /data/misc/wifi/*.conf
设置系统日期和时间
注:需要 root 权限。
adb shell
su
date -s 20160823.131500
表示将系统日期和时间更改为 2016 年 08 月 23 日 13 点 15 分 00 秒。
开启/关闭 WiFi
注:需要 root 权限。
开启 WiFi:
adb root
adb shell svc wifi enable
关闭 WiFi:
adb root
adb shell svc wifi disable
若执行成功,输出为空;若未取得 root 权限执行此命令,将执行失败,输出 Killed。
用 Monkey 进行压力测试
Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。
简单用法:
adb shell monkey -p <packagename> -v 500
表示向 指定的应用程序发送 500 个伪随机事件。
adb logcat:查看和跟踪系统日志缓冲区的信息
#查看日志,ctrl+c结束
adb logcat#如果使用logcat不指定输出哪个缓冲区的日志,则默认输出main和system的日志
#如果要指定,则
adb logcat -b
#例如指定main缓冲区:adb logcat -b main#指定输出到文件(格式自己搞)
adb logcat -b main > d:\log.txtadb logcat -c:清理日志
注意:logcat是实时日志adb logcat >/Users/xxxx/demo.log
或者
adb -s 序列号 logcat >/Users/xxxx/demo.log
可查看手机四个缓冲区日志, 包括radio, system, main, event
- radio存放通信的日志, 比如通话短信等;
- event是表示手机按键输出等事件日志等;
- main指的是手机的应用软件的日志, 是应用层日志输出;
- system是系统组件日志;
日志等级,优先级从低到高分为以下几种:
V——Verbose(最低等级,开发调试中的一些详细信息,仅在开发中使用,不可再发布产品中)D——Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)I——info(信息,一般提示性的信息)W——Warning(警告)E——Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)在 E级别中可以搜索这个关键字:fatal exceptionANR全名Application Not Responding,也就是应用无响应当操作在一段时间内系统无法处理时,系统层面会弹出ANR对话框在日志中查询:ANR in在查到ANR in 之后 上一行会有
查看日志常用的参数
adb logcat -v time 打印时间
adb logcat -v color 使用不同的颜色来显示每个优先级
adb logcat -f <filename> 将日志输出到文件(文件存在手机上),例如,adb logcat -f /sdcard/log.log
adb logcat > log.log 保存日志到PC上
adb logcat -c 清理已存在的日志
adb logcat *:W 打印Warning以上级别的日志
adb logcat ActivityManager:D '*:S' 过滤tag 为ActivityManager,level为Debug及以上级别的日志(S表示无记载silent,最高优先级,绝不输出任何内容)
输出更多日志内容
#包含logcat日志、功耗、cpu等信息日志
adb bugreport
adb网络连接
adb connect ip:port
adb端口转发
adb tcp:port tcp:port
adb进入fastboot
adb reboot bootloader
adb shell指令
Android系统是基于Linux系统开发的,支持常见的Linux命令,这些命令都保存在手机/system/bin
文件中,shell 是 linux 系统的字符交互界面。
显示手机当前目录的所有内容
$ adb shell ls
或者
$ adb shell
ls# -s 进入指定设备shell
adb -s 127.0.0.1:62001 shell#退出adb shell
exit#进入adb shell后有两种状态显示:#代表有root权限,$代表没有root权限
root@android:/ #
shell@mx4:/ $如果在操作过程中出现没有权限的问题,则需要切换root用户
su root
备注:root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,卸载系统预装App是需要root权限的。可问题在于root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机。所以,在Unix、Linux及Android中,除非确实需要,一般情况下都不推荐使用root。
查看进程
adb shell ps
查看实时资源占用情况
adb shell top
获取手机Android系统各个分区的相关信息
adb shell df
查看设备 android_id
adb shell settings get secure android_id
adb自动化获取手机信息
#获取手机型号
adb shell getprop | grep product
adb shell getprop ro.product.model#获取手机序列号
adb get-serialno#获取系统版本号
adb shell getprop ro.build.version.release
首先我们先看一下使用adb查看Android手机信息的指令
#获取手机名称
NAME = 'adb shell getprop ro.product.model'
#获取手机版本
VERSION = 'adb shell getprop ro.build.version.release'
#获取手机厂商
PRODUCER = 'adb shell getprop ro.product.brand'
如果我们忘记具体系统属性的名字,我们可以使用grep进行过滤,比如:
adb shell getprop | grep product
那么我们在用python写自动化测试的时候应该这样使用:
import osdeviceName = os.popen('adb shell getprop ro.product.model').read()
print(deviceName)
platformVersion = os.popen('adb shell getprop ro.build.version.release').read()
print(platformVersion)
device = os.popen('adb shell getprop ro.product.name ').read()
print(device)
这样我们就实现了自动化获取手机信息
adb shell dumpsys
查看电池电量的相关信息
adb shell dumpsys battery 描述信息:
Current Battery Service state: // 当前电池服务状态
AC powered: false // 交流供电,false表示没有使用AC电源供电
USB powered: true // true表示使用USB电源供电
Wireless powered: false // false表示没使用无线电源
Max charging current: 500000 // 最大充电电流
Max charging voltage: 4713000 // 最大充电电压
Charge counter: 29000 // 电荷计数器??
status: 2 // 电池状态: 2:正充电;3:没插充电器;4:不充电; 5:电池充满
health: 2 // 电池健康状态:2:良好; 3:过热; 4:无用的; 5:超压; 7:温度过低
present: true // 电池是否安装在机身
level: 42 // 电池百分比
scale: 100 //满电量时电池百分比为100%(不确定是否正确)
voltage: 3868 // 电池电压
temperature: 330 // 电池温度,单位是0.1摄氏度
technology: Li-ion // 电池类型为锂电池
- 设置为AC/USB/Wireless充电
adb shell dumpsys battery set ac/usb/wireless 1
- 设置电池为充电状态
adb shell dumpsys battery set status 2
- 设置电池为非充电状态
adb shell dumpsys battery set status 1
- 设置电量百分比
adb shell dumpsys battery set level 100
- 设置断开充电(Android 6.0以上)
adb shell dumpsys battery unplug
- 复位,恢复实际状态
adb shell dumpsys battery reset
- 获取电量消耗信息
获取整个设备的电量消耗信息: adb shell dumpsys batterystats | more
获取某个apk的电量消耗信息: adb shell dumpsys batterystats com.Package.name | more
由于输出信息太多,可使用命令more
或者 less
分篇查看
电量监控脚本
使用adb命令查询电量信息,使用split分隔,取出需要的信息
# 通过adb devices 查看手机device
device=''
# 获取当前时间
date_now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# adb命令查询电量
adb_msg = os.popen('adb -s %s shell dumpsys battery'%device)
phone_msg = adb_msg.buffer.read().decode(encoding='utf-8')
print('phone_msg:%s'%phone_msg)# 分隔返回的信息,取出是否充电状态
status = (phone_msg.split('status:')[1]).split('health:')[0].strip()
status_ch = '是' if status == '2' else "否"
# 分隔返回的信息,取出电量
level = (phone_msg.split('level:')[1]).split('scale:')[0].strip()print('status:%s,status_ch:%s,level:%s'%(status,status_ch,level))content = "当前时间:%s, 手机编号:%s, 是否在充电:%s, 剩余电量:%s %s \n"%(date_now,p_num,status_ch,level,"%")
print(content)
内存监控脚本,适用于监控内存泄漏
使用adb命令查询内存信息,使用split分隔出所需要的信息,添加到txt文档,循环输出
// An highlighted block
import os,time
now = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime()) # 获取当前时间
class mem():while True:now2 = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime()) # 获取当前时间a = os.popen('adb shell dumpsys meminfo com.cnsj.cuiniaopad')b = a.buffer.read().decode(encoding='utf8')meminfo = float((((b.split('TOTAL ')[1]).split('App Su')[0]).split(' ')[0]))MB = meminfo / 1024if 'No process found for: com.cnsj.cuiniaopad' in b:break# print(meminfo)# print(b)c = os.popen('adb shell dumpsys meminfo')d = c.buffer.read().decode(encoding='utf8')e = d.split('Other mtrack')[1]zong = (e.split('Total RAM: ')[1]).split('K ')[0]sheng = e.split('Free RAM: ')[1].split('K ')[0]yong = e.split('Used RAM: ')[1].split('K ')[0]qita = (e.split('Lost RAM: ')[1].replace(' ', '')).split('K')[0]zong1 = float(zong.replace(',', '')) / 1024sheng1 = float(sheng.replace(',', '')) / 1024yong1 = float(yong.replace(',', '')) / 1024qita1 = float(qita.replace(',', '')) / 1024jilu = '当前时间:' + now2 + ' 占用系统内存:%.2fMB 总内存:%.2fMB 剩余内存:%.2fMB 可用内存:%.2fMB 其他内存:%.2fMB' % (MB, zong1, sheng1, yong1, qita1)print(jilu)data = open(r'D:\Test_python\automation1_0\Pad0_2\log_screen_html\meminfo' + '/' + now + r"_meminfo.txt", 'a+',encoding="utf-8")print(jilu,file=data)time.sleep(10)
查看无限网络信息
adb shell dumpsys wifi
由于该指令输出的信息很多,所以在此加入参数,当输出信息在显示满一页的时候就暂停输出
如果想再继续输出,则需要按空格键继续显示下页内容。按“Q”停止显示后续输出信息。
adb shell dumpsys wifi | more
查看电源管理相关信息
adb shell dumpsys power
含义:可以判断手机是否处于锁屏状态根据关键信息进行查询,仅输出屏幕关闭时间的设置信息
windows设置:
adb shell dumpsys power | findstr "mScreenOffTimeoutSetting"
Linux设置:
adb shell dumpsys power | grep "mScreenOffTimeoutSetting"
查看当前活动的包的信息
#查看当前活动的包的信息
adb shell dumpsys activity#查看正在运行的包名
adb shell dumpsys window | findstr mCurrentFocus这个也行(查到包名和当前的活动):
adb shell dumpsys activity | find "mFocusedActivity"#获取com.eg.android.AlipayGphoneRC应用的耗电情况
adb shell dumpsys batterystats com.eg.android.AlipayGphoneRC
显示屏参数
adb shell dumpsys window displays
IMEI
adb shell dumpsys iphonesubinfo
查看电话相关信息
$ adb shell dumpsys telephony.registry
(1)“mCallState”:表示呼叫状态。0,表示待机;1,表示来电尚未接听;2,表示电话占线。
(2)“mCallIncomingNumber”:表示最近一次来电的电话号码。
(3)“mServiceState”:表示服务状态。0,表示正常使用;1,表示电话没有连接任何电信运营网络;2,表示只能拨打紧急呼叫号码;3,表示电话已关机。
(4)“mSignalStrength”:表示信号强度信息。
(5)“mMessageWaiting”:表示是否在等待无线电信息。
(6)“mCallForwarding”:表示是否启用了呼叫转移。
(7)“mDataActivity”:表示无线数据通话情况。0,表示未通话;1,表示正在接收IP PPP信号;2,表示正在发送IP PPP信号;3,表示正在发送和接收IP PPP信号。
(8)“mDataConnectionState”:表示无线数据连接情况。0,表示无数据连接;1,表示正在创建数据连接;2,表示已连接;3,表示挂起状态,已经创建好连接,但IP数据通信暂无法使用。
(9)“mDataConnectionPossible”:表示是否有数据连接。
(10)“mDataConnectionReason”:表示数据连接的原因。
(11)“mDataConnectionApn”:表示APN(Access Point Name),接入点名称。
(12)“mDataConnectionLinkProperties”:表示数据连接的链路属性。
(13)“mDataConnectionLinkCapabilities”:表示数据链路连接的能力。
(14)“mCellLocation”:表示基站的相关信息。
(15)“registrations”:表示登记记录计数。
CPU使用情况
1)查看当前系统CPU使用情况:
# 获取的是一段时间的均值
adb shell dumpsys cpuinfo
2)进程占用情况
adb shell top
adb shell top | grep "包名" —— 查看某个包的一些性能
adb shell top -d 1 |grep "包名"
3)内存使用情况
adb shell dumpsys meminfo
获取CPU信息
adb shell cat /proc/cpuinfo
clflush:64 CPU是64位的处理器
processor:1 逻辑处理器的ID
cpu MHz cpu的主频
physical id : 0 物理cpu的ID (如果都是0表示就1个物理cpu)
cpu cores cpu的逻辑个数
model name cpu型号
查看cpu运行情况
#-t显示进程名称;-s按指定行排序;-n在退出前刷新几次;-d刷新间隔;-m显示最大数量
adb shell top -m 10 -s cpu
adb shell am
am 全称为Activity Manager ,可以使用am去模拟各种系统的行为
adb shell am start com.taobao.taobao/com.taobao.tao.TBMainActivity强制停止应用
adb shell am force-stop <packagename>启动app
#com.ss.android.ugc.aweme:抖音包名
#.account.white.login.DYLoginActivity:登录活动
adb shell am start -n com.ss.android.ugc.aweme/.account.white.login.DYLoginActivity
获取启动时间 adb shell am start -W 包名/界面名
➜ ~ adb shell am start -W com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity }
Status: ok
Activity: com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity
ThisTime: 289
TotalTime: 289
WaitTime: 311
Complete以毫秒为单位
点击图标然后松开,这个时间是系统时间(分配内存和CPU的时间),应用application等待资源启动的时间
ThisTime:为界面启动耗时
TotalTime:应用自身启动耗时=ThisTime + 应用application等资源启动时间
WaitTime:系统启动耗时=TotalTime + 系统资源启动时间
adb shell pm
pm全称为package manager ,可以使用pm命令模拟Android行为或者查询设备上的应用。
列出所有的包名
adb shell pm list packages列出通过第三方安装的包
adb shell pm list packages -3包名包含某字符串的应用,比如要查看包名包含字符串 huawei 的应用列表
adb shell pm list packages huawei#列出系统apk路径和包名
adb shell pm list package -s找到 apk 的位置
$ adb shell pm path com.tence01.mm
package:/data/app/com.tence01.mm-1.apk#清除应用数据及缓存
adb shell pm clear 包名
adb shell wm
屏幕分辩率
adb shell wm size
屏幕密度
adb shell wm density
- 修改设置
注: 修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。
修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db
里存放的设置值。
修改分辨率
adb shell wm size 480x1024
表示将分辨率修改为 480px * 1024px。
恢复原分辨率命令
adb shell wm size reset
修改屏幕密度
adb shell wm density 160
表示将屏幕密度修改为 160dpi。
恢复原屏幕密度命令
adb shell wm density reset
修改显示区域
adb shell wm overscan 0,0,0,200
四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。
恢复原显示区域命令
adb shell wm overscan reset
修改关闭 USB 调试模式
adb shell settings put global adb_enabled 0
用命令恢复不了了,毕竟关闭了 USB 调试 adb 就连接不上 Android 设备了。
去设备上手动恢复吧:「设置」-「开发者选项」-「Android 调试」。
设置adb无线调试开机后自启用
setprop persist.internet.adb.enable 1
该方法当次设置有效,重启后无效
setprop service.adb.tcp.port 5555
adb push init.rc sdcard
该方法是设置后,放到手机int.rc文件中,但是现在 The init.rc script resides in within the RAMDisk attached to the boot image. 所有重启也是无效的。
提取手机boot.img,修改default.prop中的配置重新打包刷回,应该是可以的,但是太折腾。
最佳方案:
setprop persist.adb.tcp.port 5555
应该就是在 /data/property
目录下创建了persist.adb.tcp.port
文件,内容为端口号,需要su
。手机重启后,adb无线调试自动开启。
adb shell input
相关文档:https://developer.android.com/reference/android/view/KeyEvent
1.打开“指针位置” 设置
设置——开发者选项——指针位置
2.执行 adb shell input 命令
C:\Users\enmonster>adb shell input
Usage: input [<source>] <command> [<arg>...]The sources are:dpadkeyboardmousetouchpadgamepadtouchnavigationjoysticktouchscreenstylustrackballThe commands and default sources are:text <string> (Default: touchscreen)keyevent [--longpress] <key code number or name> ... (Default: keyboard)tap <x> <y> (Default: touchscreen)swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)draganddrop <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)press (Default: trackball)roll <dx> <dy> (Default: trackball)tmode <tmode>
- 模拟点击事件
adb shell input tap x坐标 y坐标
adb shell input tap 528 1539- 输入文本
首先需要把光标移到输入框,然后执行以下命令
adb shell input text zengzengzeng- 模拟滑动事件
adb shell swip <起点x> <起点y> <终点x> <终点y> <滑动时长>
adb shell input swipe 528 1539 528 1300 2000
2000为滑动时间,单位是毫秒- 返回键
adb shell input keyevent 4- 返回home键(置应用于后台)
adb shell input keyevent 3- 音量放大
adb shell input keyevent 24- 音量缩小
adb shell input keyevent 25
adb shell input keyevent <keycode>
命令,不同的 keycode 能实现不同的功能
keycode | 含义 |
---|---|
3 | HOME 键 |
4 | 返回键 |
5 | 打开拨号应用 |
6 | 挂断电话 |
24 | 增加音量 |
25 | 降低音量 |
26 | 电源键 |
27 | 拍照(需要在相机应用里) |
64 | 打开浏览器 |
82 | 菜单键 |
85 | 播放/暂停 |
86 | 停止播放 |
87 | 播放下一首 |
88 | 播放上一首 |
122 | 移动光标到行首或列表顶部 |
123 | 移动光标到行末或列表底部 |
126 | 恢复播放 |
127 | 暂停播放 |
164 | 静音 |
176 | 打开系统设置 |
187 | 切换应用 |
207 | 打开联系人 |
208 | 打开日历 |
209 | 打开音乐 |
210 | 打开计算器 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系统休眠 |
224 | 点亮屏幕 |
231 | 打开语音助手 |
276 | 如果没有 wakelock 则让系统休眠 |
查看设备 IP 地址
adb shell ifconfig | grep Mask
在有的设备上这个命令没有输出,如果设备连着 WiFi,可以使用如下命令来查看局域网 IP:
adb shell ifconfig wlan0
如果以上命令仍然不能得到期望的信息,那可以试试以下命令(部分系统版本里可用):
adb shell netcfg
查看设备 Mac 地址
adb shell cat /sys/class/net/wlan0/address
输出示例:
f8:a9:d0:17:42:4d
这查看的是局域网 Mac 地址,移动网络或其它连接的信息可以通过前面的小节「IP 地址」里提到的 adb shell netcfg
命令来查看。
查看设备更多硬件与系统属性
设备的更多硬件与系统属性可以通过如下命令查看:
adb shell cat /system/build.prop
安全相关命令
启用/禁用 SELinux
启用 SELinux
adb root
adb enable-verity
禁用 SELinux
adb root
adb shell setenforce 0
启用/禁用 dm_verity
启用 dm_verity
adb root
adb enable-verity
禁用 dm_verity
adb root
adb disable-verity
参考:https://blog.csdn.net/zhuohaiyy/article/details/80213516
https://blog.csdn.net/weixin_30699741/article/details/97539113
https://blog.csdn.net/weixin_42182599/article/details/120654697
https://blog.csdn.net/u011283906/article/details/124936219
https://blog.csdn.net/weixin_35643153/article/details/116907349
https://blog.csdn.net/weixin_42717928/article/details/106729739
https://blog.csdn.net/MrlittleP/article/details/113110398
http://t.zoukankan.com/lialong1st-p-8297928.html
https://blog.csdn.net/lee171122174/article/details/120627408
ADB 操作命令详解及用法大全:https://javajgs.com/archives/141606
Android adb常用命令:https://mp.weixin.qq.com/s?__biz=Mzg2NzUzNzk1Mw==&mid=2247493102&idx=2&sn=9d9cc88d55dd39475d13e134deafa134
Android adb命令总结 :https://f5.pm/go-124092.html