文章目录
- 文件管理
- 截屏与录屏
- logcat 使用
- dumpsys 相关
- ps 相关
- am 相关
- pm 相关
- wm 相关
- setprop 设置属性
- input 相关
- adb connect 远程无线调试
- 其它
 
 
本文首发地址 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 abcgrep在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 >nuladb shell input keyevent 21echo 按键 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
相关连接
- Git配置和常用命令
- 安卓软件开发常用命令集合
- adb常用命令详解–提升开发效率利器