[1002]adb命令大全

文章目录

    • 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  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]
 
-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 视频的尺寸,比如 1280x720,默认是屏幕分辨率。
–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  -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.txt
 
adb logcat -c:清理日志
注意:logcat是实时日志

adb logcat >/Users/xxxx/demo.log
或者
adb -s 序列号 logcat >/Users/xxxx/demo.log

可查看手机四个缓冲区日志, 包括radio, system, main, event

  • radio存放通信的日志, 比如通话短信等;
  • event是表示手机按键输出等事件日志等;
  • main指的是手机的应用软件的日志, 是应用层日志输出;
  • system是系统组件日志;

可以看到main和system的日志信息
[1002]adb命令大全_第1张图片

日志等级,优先级从低到高分为以下几种:

V——Verbose(最低等级,开发调试中的一些详细信息,仅在开发中使用,不可再发布产品中)

D——Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)

I——info(信息,一般提示性的信息)

W——Warning(警告)

E——Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)

在 E级别中可以搜索这个关键字:fatal exception

ANR全名Application Not Responding,也就是应用无响应当操作在一段时间内系统无法处理时,系统层面会弹出ANR对话框

在日志中查询:ANR in

在查到ANR in 之后 上一行会有

查看日志常用的参数

adb logcat -v time 打印时间
adb logcat -v color 使用不同的颜色来显示每个优先级
adb logcat -f  将日志输出到文件(文件存在手机上),例如,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 os

deviceName = 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 / 1024
        if '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(',', '')) / 1024
        sheng1 = float(sheng.replace(',', '')) / 1024
        yong1 = float(yong.replace(',', '')) / 1024
        qita1 = float(qita.replace(',', '')) / 1024


        jilu = '当前时间:' + 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 

启动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 []  [...]

The sources are:
      dpad
      keyboard
      mouse
      touchpad
      gamepad
      touchnavigation
      joystick
      touchscreen
      stylus
      trackball

The commands and default sources are:
      text  (Default: touchscreen)
      keyevent [--longpress]  ... (Default: keyboard)
      tap   (Default: touchscreen)
      swipe     [duration(ms)] (Default: touchscreen)
      draganddrop     [duration(ms)] (Default: touchscreen)
      press (Default: trackball)
      roll   (Default: trackball)
      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 含义
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

你可能感兴趣的:(Python前行者,android)