adb常用命令详解--提升开发效率利器
本文首发地址 https://h89.cn/archives/281.html
最新更新地址 https://gitee.com/chenjim/chenjimblog
博主 Linux 使用较多,平时开发使用各种命令也比较多,之前写过一篇博文 安卓软件开发常用命令集合,其中 adb 相关命令最多,这里把 adb 相关抽离、补充完善。adb shell ls /system/bin/
列出的命令均可以通过 adb shell
执行,本文主要介绍博主经常用到的命令使用及功能
文件管理
- 导出文件到电脑
adb pull /system/priv-app/ p-app
- 推送文件到手机
adb push ./out.so /system/lib64
- rm/touch/mkdir/cp/mv/find/grep 使用同 Linux 命令
adb shell rm /system/lib64/out.so
截屏与录屏
-
截屏并导出文件到电脑
adb exec-out screencap -p > screen.png
adb shell input keyevent 120
-
录屏
adb shell screenrecord /sdcard/example.mp4
adb pull /sdcard/example.mp4
logcat 使用
-
logcat 并用tee重定向输出到文件log.txt
adb logcat |tee log.txt
-
logcat过滤关键字abc的日志
adb logcat | grep abc
grep在windows依赖C:\Program Files\Git\usr\bin\grep.exe
adb shell "logcat | grep abc"
使用android
系统的grep
命令
先adb shell
,然后logcat | grep -iE "abc|def"
过滤包含 abc 或者包含 def 的内容,-i 表示忽略大小写
先adb shell
,然后logcat | grep abc | grep def"
过滤包含 abc 且包含 def 的内容 -
只过滤
tag
为abc的日志
adb logcat -s abc
-
查看
events
日志
adb logcat -b events
抓events
,默认是main,system,crash
,可选项main system radio events crash
adb logcat -b all
可抓取所有(main+system+kernel+events等)日志
更多grep
用法,可参考 linux-grep -
logcat 只抓去ERROR的日志
adb logcat *:E
更多 logcat 使用方法可以参考 android logcat
dumpsys 相关
可以通过 adb shell dumpsys -l
列出可以 dump 的模块
-
当前acitivity信息
adb shell dumpsys activity | grep mResumedActivity
adb shell dumpsys activity | grep ActivityRecord
可以查看相关包名、Activity堆栈 -
查看某服务是否正在运行
adb shell "dumpsys activity services | grep YourServiceName"
-
查看 window 层级 (安卓10以下可能不支持此命令)
adb shell dumpsys activity containers
-
应用的内存信息
adb shell dumpsys meminfo com.android.camera
可以连续监控,以查看是否存在内存泄露问题 -
获取某个应用的版本号
adb shell dumpsys package com.baidu.BaiduMap | grep version
-
查看当前合成显示的 layers
adb shell dumpsys SurfaceFlinger
-
获取 input 状态
adb shell dumpsys input
可以输出Input Manager State
、Event Hub State
、Input Reader State
、Input Dispatcher State
、Keyboard Layouts
、PersistentDataStore
这些信息在分析 Framework 中 input 模块问题至关重要。 -
获取当前窗口状态
adb shell dumpsys window
adb shell dumpsys window displays
是上面的子集,近期任务(打开应用)列表
adb shell dumpsys window windows
是上面的子集,有更多详细信息,比如mDrawState=HAS_DRAWN
表示已经绘制,mDrawState=NO_SURFACE
表示未显示
ps 相关
- 查看真正运行且包含 camera 关键字的进程
adb shell ps -A |grep camera
- 获取进程
com.android.camera
的 pid
adb shell ps | grep "com.android.camera" | awk '{print $2}'
am 相关
-
结束进程
adb shell am force-stop com.chenjim.package
结束指定包名的应用
adb shell pkill chenjim*
结束包名含有chenjim
所有正在运行的应用 -
adb 触发应用 gc
adb shell kill -10 23683
后面数值是进程 PID
pid=$(adb shell ps | grep "com.android.camera" | awk '{print $2}') && adb shell kill -10 $pid
也可以直接执行此命令 -
启动安卓原生 Launcher3 桌面应用
adb shell am start -n com.android.launcher3/.Launcher
-
启动安卓原生设置应用
adb shell am start -n "com.android.settings/.Settings"
-
启动安卓原生拨号应用
adb shell "am start -n com.android.dialer/.DialtactsActivity"
-
启动MTK工程模式 (##3646633## )
adb shell am start -n com.mediatek.engineermode/.EngineerMode
-
启动MTK日志应用mtklog ( *1973461# )
adb shell am start -n com.mediatek.mtklogger/.MainActivity
-
启动高通日志应用 ( *1973461# )
adb shell am start -n com.hmct.ftmode/.FTModeMain
-
发广播恢复出厂设置,不是所有设备都有效,其流程参考 链接
adb shell am broadcast -a android.intent.action.MASTER_CLEAR
-
发带参数广播如下,更多介绍参考 链接
adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true
-
启动服务Service
adb shell am startservice -n com.chenjim.pkg/.YourService
pm 相关
-
系统安装所有应用包名及位置
adb shell "pm list packages -f "
列出所有应用安装位置
adb shell "pm list packages -f | grep camera"
关键字过滤
adb shell pm path com.android.camera
列出指定包安装位置 -
清除应用数据(包含缓存)
adb shell pm clear com.android.camera
wm 相关
-
调整设备显示尺寸分辨率
adb shell wm size
返回当前应用显示尺寸
adb shell wm size 1600x2560
重新设置显示分辨率为 1600x2560 , 在适配一些特殊尺寸UI 是很有用
-
调整设备屏幕密度
adb shell wm density
获取当前屏幕密度,得到的结果比如 480
adb shell wm density 320
相对上面的 480 ,界面元素会变小
setprop 设置属性
setprop
设置属性,getprop
可以获取属性
-
设置系统属性
adb shell setprop persist.sys.camera.sensor.enable true
persist
表示重启断电不变,如果是 ro 等,重启就不存在了
sys
表示系统模块,比如 sys、system、dev、default 或 config
camera
表示 sys 的子模块
sensor
表示字段的名称
enable
表示字段的类型,并无具体的规则,使用建议:enable
、config
等
可以通过android.os.SystemProperties
在代码获取配置的值
更多可参考 add-system-properties -
打开ipod debug模式
输入如下命令,ipo关机后,adb仍然可以处于工作的状态。
adb shell setprop ipod_debug 1
-
获取 Settings.System.SHOW_KEY_PRESSES 的值
adb shell settings get system show_key_presses
input 相关
-
发送模拟按键事件
adb shell input keyevent 21
其中21
表示KEYCODE_DPAD_LEFT
更多 KeyEvent 含义参考 android.view.KeyEvent -
模拟点击某个点
adb shell input tap 230 2065
-
模拟滑动事件
adb shell input swipe 500 1200 500 900 300
在 300ms 从 [500,1200] 上滑到 [500,900] -
基于 windows 的 adb 自动按键测试 bat 脚本
: 注释:bat文件默认字符集为ANSI,否则有乱码 @echo off set times=5 set gap=3 echo 最多执行%times%次,每次间隔%gap%秒 for /l %%i in (1,1,%times%) do ( choice /t %gap% /d y /n >nul adb shell input keyevent 21 echo 按键 KeyEvent.KEYCODE_DPAD_LEFT,当前第%%i%次 ) pause
adb connect 远程无线调试
- 方法一:打开手机的开发者模式,开启 开发者选项,开启无线调试,如下图所示
连接设备adb connect 192.168.31.96:42005
断开连接adb disconnect 192.168.31.96:42005
- 方法二:使用一些老旧设备,需要完全root权限,一般手机系统不行
- 手机连接电脑,执行
adb root
(都可以USB线连接了,无线连接只能备用吧) - 手机下载安装终端,并授权ROOT权限
(MIUI系统开发版在菜单'设置-->应用设置-->授权管理->ROOT权限管理')
在终端 执行以下命令设置远程调试端口,并重启 adbdsu setprop service.adb.tcp.port 5555 stop adbd start adbd
- 在手机终端执行以下命令获取手机IP信息
ip neigh
- 在电脑远程连接设备命令如下
adb connect 192.168.59.132
192.168.59.132
是手机WIFI分配的IP地址,默认端口是上面步骤设置的5555
参考自:https://juejin.cn/post/6844903496861351943
- 手机连接电脑,执行
其它
-
重启到 recovery 清数据
命令adb reboot recovery
-
查看存储使用情况
adb shell df -h
相关连接
本文链接:adb常用命令详解--提升开发效率利器 - https://chenjim.com/archives/281.html
版权声明:原创文章 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文链接和本声明。
评论已关闭