adb 挂载及过滤
获得root权限后,获得写权限
adb disable-verity 第一次
adb root
挂载
adb remount (重新挂载系统分区,使系统分区重新可写,只针对system分区)。
adb shell mount -o remount, rw /[路径] (重新挂载其他分区,使其他分区重新可写)
搜索
adb shell cat path | grep(findstr) +字串 过滤字串路径
adb shell getprop |grep(findstr) +字串 过滤字串prop属性
所有关于日期时间的:
adb shell getprop | grep date
adb shell settings get global auto_timedd
过滤设备进程
adb shell ps -ef | findstr systemui
杀掉对应的进程
adb shell kill 2392
产品信息
adb shell getprop ro.product.name 查看当前产品的名称
adb shell getprop ro.build.version.release 查看当前系统版本
adb shell getprop ro.product.cpu.abi 查看当前产品cpu架构
adb shell getprop ro.product.brand 手机厂商名称
adb shell getprop ro.product.model 手机型号
adb shell getprop ro.build.type 版本
adb shell getprop ro.serialno Android SN
MAC地址: adb shell cat /sys/class/net/wlano/address
Android ID:adb shell settings get secure android_id
设备得IMEI:adb shell service call iphonesubinfo 1(只能获得imei1)
CPU信息:adb shell cat /proc/cpuinfo
CPU结构几核:adb shell cat /proc/cpuinfo|grep architecture
更多硬件与系统属性: adb shell cat /system/build.prop
查看手机RAM: adb shell cat /proc/meminfo
查看屏幕密度:adb shell wm density (单位dpi)
dumpsys使用:
查看分辨率:
adb shell dumpsys display | findstr DisplayDeviceInfo
查看电池状况
adb shell dumpsys battery (scale代表最大电量,level代表当前电量)
显示屏参数
adb shell dumpsys window displays
adb shell dumpsys activity--------------------查看ActvityManagerService 所有信息
adb shell dumpsys activity activities-----------查看Activity组件信息
adb shell dumpsys activity services-----------查看Service组件信息
adb shell dumpsys activity providers----------查看ContentProvider组件信息
adb shell dumpsys activity broadcasts--------查看BraodcastReceiver信息
adb shell dumpsys activity intents--------------查看Intent信息
adb shell dumpsys activity processes---------查看进程信息
查看最近任务栈
adb shell dumpsys activity recents
查看栈顶应用及焦点窗口
adb shell dumpsys window | grep mCurrentFocus
当前焦点Activity
adb shell dumpsys activity |findstr topResumedActivity
查栈顶应用activity
adb shell dumpsys activity activities | grep mFocuseActivity // Android10.0之前
抓应用包相关
adb shell dumpsys package 包名 //UserId、ContentProvider、权限信息、版本信息、路径等
adb shell dumpsys package com.google.android.contacts | grep version //看联系人应用版本号
adb shell dumpsys package com.google.android.apps.messaging | grep version //查看短信应用版本号
磁盘状态 adb shell dumpsys diskstats
dumpsys.bat
@echo on adb shell service list | findstr ILockSettings
set filename=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
adb shell dumpsys activity activities >dump\activities.txt
adb shell dumpsys window windows >dump\windows.txt
adb shell dumpsys SurfaceFlinger >dump\SurfaceFlinger.txt
adb shell dumpsys package packagename >dump\package.txt
adb shell dumpsys statusbar >dump\statusbar.txt
adb shell dumpsys meminfo >dump\meminfo.txt
adb shell dumpsys activity service com.android.systemui >dump\systemui.txt
adb shell dumpsys lock_settings >dump\lock_settings.txt
pause
自带工具:
屏幕截图
adb shell screencap -h 帮助信息
// Android10版本
adb shell exec-out screencap -p >sctest.png
//旧版本可以用
adb shell screencap -p /sdcard/**.png
screen.bat
@echo on
set filename=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png .\%filename%.png
adb shell rm /sdcard/screen.png
pause
录制屏幕
adb shell screenrecord -help 帮助信息
adb shell screenrecord /sdcard/**.mp4
adb pull /sdcard/**.mp4 ./
自动化Monkey
adb shell monkey -p <packagename> -v 500
adb shell wm:
adb shell wm size 480x1024:修改分辨率
adb shell wm size reset:恢复分辨率
adb shell PM:
查看系统应用
adb shell pm list packages -f
adb shell pm list packages -f | grep 应用名字部分字串
apk的名字以及在手机中具体的安装位置
adb shell pm list packages -f |findstr "com.android.deskclock"
查看三方应用
adb shell pm list packages -3
//查看应用apk路径
adb shell pm path com.xxx.camera
//查看权限列表
adb shell pm list permissions -g -d
//清除数据
adb shell pm clear 应用包名
adb shell AM:
启动activity组件
adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。adb shell am start -n 包名/包名+类名 -es "toast" "Hello,world!" //启动activity并加Toast提示。
服务
serviceadb shell am startservice -n ...
adb shell am startservice -n com.android.systemui/.SystemUIService //启动手机虚拟按键
广播
adb shell am broadcast -a ...
停止应用
adb shell am force-stop <packagename>
收紧内存
adb shell am send-trim-memory <pid>
//设置本地locu.prop
adb shell setprop key value
//查看本地locu.prop
adb shell getprop key
抓Log命令
adb logcat --help 选项解析
-- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志;
adb logcat -s "TAG" 只打印包含有TAG的日志,无此TAG不打印
-- "-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功; 使用这个adb logcat > log 替换
-- "-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;
-- "-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;
-- "-v"选项 : 设置日志的输出格式, 注意只能设置一项;
adb logcat -v time 可以啥看日志的输出时间
"time"格式 : "日期 时间 优先级 / 标签 (进程ID) : 进程名称 : 日志信息 "
adb logcat -v thread
"thread"格式 : " 优先级 ( 进程ID : 线程ID) 标签 : 日志内容 "
adb logcat -v long
"long"格式 : " [ 日期 时间 进程ID : 线程ID 优先级 / 标签] 日志信息 "
adb logcat -v brief
"brief"格式 : 这是默认的日志格式 " 优先级 / 标签 (进程ID) : 日志信息 "
adb logcat -v process
"process"格式 : " 优先级 (进程ID) : 日志信息 "
adb logcat -v tag
"tag"格式 : " 优先级 / 标签 : 日志信息"
adb logcat -v raw
"raw"格式 : 只输出日志信息, 不附加任何其他 信息
-- "-c"选项 : 清空所有的日志缓存信息;
-- "-d"选项 : 将缓存的日志输出(请勿阻止);
adb logcat -d -v time -b all > fifle.txt
-- "-t"选项 : 输出最近的几行日志, 输出完退出(请勿阻止);
adb logcat -t 5 可以输出最近的5行日志
-- "-g"选项 : 查看日志缓冲区信息;
-- "-b"选项 : 加载一个日志缓冲区, 默认是 main, 下面详解;
adb logcat -b 缓冲区类型
system缓冲区 - 与系统相关的日志信息,
radio缓冲区 - 广播电话相关的日志信息,
events缓冲区 - 事件相关的日志信息,
main缓冲区 - 默认的缓冲区
adb logcat -b kernel
adb logcat -v time -b main -b events -b system > startlog.txt
抓内核日志信息:adb shell dmesg > dmesg.txt
抓bugreport压缩包(adb高版本支持 如:1.0.39): adb bugreport ./
-- "-B"选项 : 以二进制形式输出日志;
过滤项格式 : <tag>[:priority] , 标签:日志等级,
默认的日志过滤项是 info : " *:I " ;
-- V : Verbose (明细);
-- D : Debug (调试);
-- I : Info (信息);
-- W : Warn (警告);
-- E : Error (错误);
-- F : Fatal (严重错误);
-- S : Silent(Super all output) (最高的优先级, 可能不会记载东西);
如:
//过滤警告级别及级别以上的日志(Warn、Error、Fatal等)
adb logcat *:W
//过滤错误级别包含“chrome”字串的日志
adb logcat *:E | grep chrome
使用管道过滤日志
过滤字符串忽略大小写 : adb logcat | grep -i wifi
使用正则表达式匹配
adb logcat | grep "^..Activity" 就可以匹配日志中的 "V/ActivityManager" 字符串;
抓取开机过程中log:
ipod_debug 置1,打开ipod debug模式,这样的话,ipo关机后,adb仍然可以处于工作的状态
adb root
adb shell setprop ipod_debug 1
联合过滤打印:
adb logcat Tag1:I Tag2:D*S
PullLog:
set log_path = %date: =_%_%time::=_%
set log_path = %log_path:/ =_%
mkdir "log%log_path%"
cd "log%log_path%"
adb wait-for-devices
adb remount
adb pull /data/log/android_log/
CleanLog:
adb logcat -c
adb shell rm /data/log/android_log/*
adb shell rm /data/anr/*
pause
模拟手机按键
HOME键: adb shell input keyevent 3
返回键 :4 ,音量+:24,,音量-:25,电源键:26
菜单键:82 ,静音键:164 ,点亮屏幕:224 熄灭屏幕:223
媒体控制:播放/暂停:85,停止86,下一首:87,上一首:88 ,恢复:126 ,暂停:127
滑动解锁
adb shell input swipe 300 1000 300 500 (起点终点坐标)
输入文本
adb shell input text hello (出现hello文本框)
Adb 高级:
1.Adb运行原理:
adb运行原理是PC端的adb server 与手机端的守护进程adbd建立连接,然后PC端的adb client通过adb server转发命令,adbd收到命令后解析运行。
所以如果adbd以普通权限运行,有些通过root权限才能执行的命令无法直接用 adb xxx执行。
这是可以adb shell 然后 su root 后执行命令,也可以让adbd 以root权限执行,这就可以随意执行最高权限命令了。
adb disable-verity 第一次
adb root 正常输出: restarting adbd as root
三星手机可能执行adb root无法获取root权限,需要安装 adb Insecure,然后adb root。
非root权限:adb unroot
2.adb 查看设备
adb [-d|-e|-s <SerialNumber>] <command>
注:仅有一个设备,可以省略 [-d|-e|-s <SerialNumber>] 这一部分,直接adb <command>
参数 含义
|-d |: 指定当前唯一通过usb连接Android设备
|-e|: 指定当前唯一的Android模拟器
|-s <SerialNum>|: 指定相同序列号的设备/模拟器,<SerialNum> 通过adb devices获取。
3.查看应用列表的基本命令格式
adb shell pm list package [-f|-d|-e|-s|-3|-i|-u|-user USER_ID] [FILTER]
参数 显示包名列表
|-f |: 显示应用关联的apk文件
|-d|: 只显示disable应用
|-e|: 只显示enable应用
|-s|: 只显示系统应用
|-3|: 只显示三方应用
|-i|: 只显示installed应用
|-u|: 只显示uninstalled应用
|--user USER_ID|: 只显示id用户的空间的所有包
[FILTER] 只显示 grep/findstr +字串 的应用
4.安装apk
adb install 其实分三步走:
1.push apk文件到 /data/local/tmp
2.adb shell 到调用 pm insatll 安装
3.删除 /data/local/tmp 下对应apk文件
所以必要时可以手动分步执行安装过程。
adb insatll [-lrtsdg] <path_to_apk>
参数 含义
|-l|: /mnt/asec/安装到保护目录
|-r|: 允许覆盖安装
|-t|: testonly="true"安装测试
|-d|: 降级覆盖安装
|-g|: 授予所有运行权限安装
5.无线连接,adb支持,无需USB线
1.连接同一个wifi
2.设备和电脑先连接USB线
3.adb tcpip 5555
4.断开USB
5.找到设备IP地址
6.通过IP连接
adb connect <device-id-address>
7.adb devices
输出:<devices-ip-address>:5555 devices 表示连接成功
8.断开 adb disconnect
Linux的lsusb:Android usb 设备管理器lsusb 分析_Tony的专栏-CSDN博客
附:
使用adb命令结束进程的方法有两种的相同作用与区别
1、adb shell " kill -9 <进程号> " 结束进程
2、adb shell " am force-stop " <包名> " 结束进程树
linux下杀死进程(kill)的N种方法
https://blog.csdn.net/andy572633/article/details/7211546
kill -3 pid 和kill -9 pid
https://blog.csdn.net/fan380485838/article/details/81018734
linux命令-kill pid和kill -9 pid
https://blog.csdn.net/weixin_43851795/article/details/85038948?
系统稳定性问题分析,当遇到系统卡死时,我们经常要使用“kill -3 pid”来打印System_Server进程各个线程的Java调用栈,
根据线程状态及调用栈来更进一步定位问题点,当然某个应该界面卡顿时间长时也可以通过这个命令来抓取Java调用栈进行分析。
adb shell “kill -3 pid”后文件的保存路径为:/proc/${pid}/cwd。文件名为:antBuilderOutput.log
创建SDCard:
mksdcard 1024M ~/名称.img
启动DDMS:
ddms
安装应用程序:
adb install -r 应用程序.apk
遇到问题:INSTALL_FAILED_VERIFICATION_FAILURE
adb shell settings put global verifier_verify_adb_installs 0
adb shell settings put global package_verifier_enable 0
如果不能解决。这时,可以将apk放到这个目录下:/system/app
缷载apk包:
adb shell cd data/app
rm apk
adb uninstall apk包的主包名
adb install -r apk包
查看adb命令帮助信息:
adb help
adb shell后面跟的命令主要来自:
源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。
删除系统应用:
adb remount (重新挂载系统分区,使系统分区重新可写)。
adb shell cd system/app rm *.apk
发布端口:你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000
复制文件:
复制一个文件或目录到设备或模拟器上:
如:adb push test.txt /tmp/test.txt
从设备或模拟器上复制一个文件或目录:
如:adb pull /addroid/lib/libwebcore.so .
查看bug报告:
adb bugreport
记录无线通讯日志:
一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
adb logcat -b radio
获取设备的ID和序列号:
adb get-product
adb get-serialno
访问数据库SQLite3 adb shell sqlite3