当前位置:   article > 正文

[1002]adb命令大全_setprop persist.adb.tcp.port 5555 failed to set pr

setprop persist.adb.tcp.port 5555 failed to set property 'persist.adb.tcp.po

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的版本和帮助信息
  • 1
  • 2
  • 3
  • 4

查看adb版本

adb version
  • 1

重启手机

重启到 Recovery 模式
adb reboot recovery

从 Recovery 重启到 Android
adb reboot

重启到 Fastboot 模式
adb reboot bootloader
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

adb devices : 查看电脑是否连接设备

#查看连接的设备
adb devices
或者
adb devices -l

#查看设备连接状态
adb get-state
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

使用该指令将返回设备状态信息,该状态信息包含三种

  • devices状态:表示移动设备或者模拟器已经连接到adb服务器上
  • offline状态:表示移动设备或者模拟器没有连接到adb服务器或者没有响应
  • no devices状态:表示没有设备或者模拟器连接

以 root 权限运行 adbd

adb root
  • 1

开启或者关闭服务

adb start-server:开启adb服务
adb kill-server:关掉adb服务
  • 1
  • 2

指定 adb server 的网络端口

adb -P <port> start-server
  • 1

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 :授权所有运行时权限
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

第二种情况:当有多台设备时,使用-s 序列号 进行指定设备

adb -s 序列号 install apk路径
  • 1

adb uninstall :卸载

#packagename是应用包名
#包名问开发或自己去查询
adb uninstall [-k]<packagename>
 
-k表示卸载应用但保留数据和缓存文件

adb unstall demo.apk
卸载设备中的应用,并希望保留配置和缓存文件
adb -s 序列号 shell pm uninstall -k 包名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

adb(pull,push)发送文件

adb pull : 将移动设备中的文件传送到PC上

adb pull 移动设备路径 PC路径
  • 1

adb push :将PC中的文件传送到移动设备端

adb push PC路径 移动设备路径
adb push PC路径 /sdcard/
  • 1
  • 2

adb屏幕截图

截图保存到电脑

adb exec-out screencap -p > sc.png
  • 1

如果 adb 版本较老,无法使用 exec-out 命令,这时候建议更新 adb 版本。无法更新的话可以使用以下麻烦点的办法:

先截图保存到设备里:

adb shell screencap -p /sdcard/sc.png
  • 1

然后将 png 文件导出到电脑

adb pull /sdcard/sc.png C:\Users\Administrator\Desktop
  • 1

可以使用 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
  • 1

Mac OS X

adb shell screencap -p | gsed "s/\r$//"  > sc.png
  • 1

这个方法需要用到 gnu sed 命令,在 Linux 下直接就有,在 Windows 下 Git 安装目录的 bin 文件夹下也有。如果确实找不到该命令,可以下载 sed for Windows 并将 sed.exe 所在文件夹添加到 PATH 环境变量里。
而在 Mac 下使用系统自带的 sed 命令会报错:

sed: RE error: illegal byte sequence
  • 1

需要安装 gnu-sed,然后使用 gsed 命令:

brew install gnu-sed
  • 1
录制屏幕

录制屏幕以 mp4 格式保存到 /sdcard:

adb shell screenrecord /sdcard/filename.mp4
  • 1

需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。
如果需要导出到电脑:

adb pull /sdcard/filename.mp4
  • 1

可以使用 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
  • 1
  • 2
  • 3
设置系统日期和时间

注:需要 root 权限。

adb shell
su
date -s 20160823.131500
  • 1
  • 2
  • 3

表示将系统日期和时间更改为 2016 年 08 月 23 日 13 点 15 分 00 秒。

开启/关闭 WiFi

注:需要 root 权限。
开启 WiFi:

adb root
adb shell svc wifi enable
  • 1
  • 2

关闭 WiFi:

adb root
adb shell svc wifi disable
  • 1
  • 2

若执行成功,输出为空;若未取得 root 权限执行此命令,将执行失败,输出 Killed。

用 Monkey 进行压力测试

Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。
简单用法:

adb shell monkey -p <packagename> -v 500
  • 1

表示向 指定的应用程序发送 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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

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

可以看到main和system的日志信息
image.png

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

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

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

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

W——Warning(警告)

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

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

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

在日志中查询:ANR in

在查到ANR in 之后 上一行会有
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

查看日志常用的参数

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,最高优先级,绝不输出任何内容)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出更多日志内容

#包含logcat日志、功耗、cpu等信息日志
adb bugreport
  • 1
  • 2

adb网络连接

adb connect ip:port
  • 1

adb端口转发

adb tcp:port tcp:port
  • 1

adb进入fastboot

adb reboot bootloader
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

备注:root用户是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,卸载系统预装App是需要root权限的。可问题在于root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机。所以,在Unix、Linux及Android中,除非确实需要,一般情况下都不推荐使用root。

查看进程

adb shell ps
  • 1

查看实时资源占用情况

adb shell top
  • 1

获取手机Android系统各个分区的相关信息

adb shell df
  • 1

查看设备 android_id

adb shell settings get secure android_id
  • 1

adb自动化获取手机信息

#获取手机型号
adb shell getprop | grep product
adb shell getprop ro.product.model

#获取手机序列号
adb get-serialno

#获取系统版本号
adb shell getprop ro.build.version.release
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

首先我们先看一下使用adb查看Android手机信息的指令

#获取手机名称
NAME = 'adb shell getprop ro.product.model'
#获取手机版本
VERSION = 'adb shell getprop ro.build.version.release'
#获取手机厂商
PRODUCER = 'adb shell getprop ro.product.brand'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果我们忘记具体系统属性的名字,我们可以使用grep进行过滤,比如:

adb shell getprop | grep product
  • 1

那么我们在用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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这样我们就实现了自动化获取手机信息

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 // 电池类型为锂电池
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 设置为AC/USB/Wireless充电
adb shell dumpsys battery set ac/usb/wireless 1
  • 1
  • 设置电池为充电状态
adb shell dumpsys battery set status 2
  • 1
  • 设置电池为非充电状态
adb shell dumpsys battery set status 1
  • 1
  • 设置电量百分比
adb shell dumpsys battery set level 100
  • 1
  • 设置断开充电(Android 6.0以上)
adb shell dumpsys battery unplug
  • 1
  • 复位,恢复实际状态
adb shell dumpsys battery reset
  • 1
  • 获取电量消耗信息

获取整个设备的电量消耗信息: 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
内存监控脚本,适用于监控内存泄漏

使用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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
查看无限网络信息
adb shell dumpsys wifi
由于该指令输出的信息很多,所以在此加入参数,当输出信息在显示满一页的时候就暂停输出
如果想再继续输出,则需要按空格键继续显示下页内容。按“Q”停止显示后续输出信息。
adb shell dumpsys wifi | more
  • 1
  • 2
  • 3
  • 4
查看电源管理相关信息
adb shell dumpsys power
含义:可以判断手机是否处于锁屏状态

根据关键信息进行查询,仅输出屏幕关闭时间的设置信息
windows设置:
adb shell dumpsys power | findstr "mScreenOffTimeoutSetting"
Linux设置:
adb shell dumpsys power | grep "mScreenOffTimeoutSetting"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
查看当前活动的包的信息
#查看当前活动的包的信息
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
显示屏参数
adb shell dumpsys window displays
  • 1
IMEI
adb shell dumpsys iphonesubinfo
  • 1
查看电话相关信息
$ adb shell dumpsys telephony.registry
  • 1

(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
  • 1
  • 2

2)进程占用情况

adb shell top 
adb shell top | grep "包名" —— 查看某个包的一些性能
adb shell top -d 1 |grep "包名"
  • 1
  • 2
  • 3

3)内存使用情况

adb shell dumpsys meminfo
  • 1

获取CPU信息

adb shell cat /proc/cpuinfo
  • 1

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
  • 1
  • 2

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

获取启动时间 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 + 系统资源启动时间
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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 包名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

adb shell wm

屏幕分辩率
adb shell wm size
  • 1
屏幕密度
adb shell wm density
  • 1
  • 修改设置

注: 修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。
修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的设置值。

修改分辨率
adb shell wm size 480x1024
  • 1

表示将分辨率修改为 480px * 1024px。

恢复原分辨率命令
adb shell wm size reset
  • 1
修改屏幕密度
adb shell wm density 160
  • 1

表示将屏幕密度修改为 160dpi。

恢复原屏幕密度命令
adb shell wm density reset
  • 1
修改显示区域
adb shell wm overscan 0,0,0,200
  • 1

四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。

恢复原显示区域命令
adb shell wm overscan reset
  • 1
修改关闭 USB 调试模式
adb shell settings put global adb_enabled 0
  • 1

用命令恢复不了了,毕竟关闭了 USB 调试 adb 就连接不上 Android 设备了。
去设备上手动恢复吧:「设置」-「开发者选项」-「Android 调试」。

设置adb无线调试开机后自启用

setprop persist.internet.adb.enable 1
  • 1

该方法当次设置有效,重启后无效

setprop service.adb.tcp.port 5555
adb push init.rc sdcard
  • 1
  • 2

该方法是设置后,放到手机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
  • 1

应该就是在 /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:
      dpad
      keyboard
      mouse
      touchpad
      gamepad
      touchnavigation
      joystick
      touchscreen
      stylus
      trackball

The 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
- 模拟点击事件
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

adb shell input keyevent <keycode> 命令,不同的 keycode 能实现不同的功能

keycode含义
3HOME 键
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
  • 1

在有的设备上这个命令没有输出,如果设备连着 WiFi,可以使用如下命令来查看局域网 IP:

adb shell ifconfig wlan0
  • 1

如果以上命令仍然不能得到期望的信息,那可以试试以下命令(部分系统版本里可用):

adb shell netcfg
  • 1

查看设备 Mac 地址

adb shell cat /sys/class/net/wlan0/address
  • 1

输出示例:

f8:a9:d0:17:42:4d
  • 1

这查看的是局域网 Mac 地址,移动网络或其它连接的信息可以通过前面的小节「IP 地址」里提到的 adb shell netcfg 命令来查看。

查看设备更多硬件与系统属性

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

adb shell cat /system/build.prop
  • 1

安全相关命令

启用/禁用 SELinux

启用 SELinux

adb root
adb enable-verity
  • 1
  • 2

禁用 SELinux

adb root
adb shell setenforce 0
  • 1
  • 2

启用/禁用 dm_verity

启用 dm_verity

adb root
adb enable-verity
  • 1
  • 2

禁用 dm_verity

adb root
adb disable-verity
  • 1
  • 2

参考: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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56451
推荐阅读
相关标签
  

闽ICP备14008679号