Android最常用命令-Adb

不同操作系统关键字:


版权声明:本文为CSDN博主「热爱学习的吉吉」的原创文章,
原文链接:https://blog.csdn.net/u010871962/article/details/78370069

操作系统 1 2
window finstr ipconfig
Linux grep ifconfig

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 | grep telephony

  • 杀掉对应的进程
    adb shell kill 2392

产品信息


  • 查看当前产品的名称
    adb shell getprop ro.product.name

  • 查看当前系统版本
    adb shell getprop ro.build.version.release

  • 查看当前产品cpu架构
    adb shell getprop ro.product.cpu.abi 查看当前产品cpu架构

  • MAC地址
    adb shell cat /sys/class/net/wlano/address IMEI地址:adb shell settings get secure android_id

  • 设备得IMEI
    adb shell service call iphonesubinfo 1

  • 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 adb shell dumpsys activity | grep mResumedActivity // Android10.0之后

  • 查栈顶应用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

自带工具


  • 屏幕截图
    adb shell screencap -h 帮助信息
    // Android10版本
    adb exec-out screencap -p >sctest.png
    //旧版本可以用
    adb shell screencap -p /sdcard/**.png

  • 录制屏幕
    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 应用名字部分字串

  • 查看三方应用
    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 设置日志的输出格式, 注意只能设置一项;
-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"格式 : " 优先级 / 标签 : 日志信息" ,"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:
    pod_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

版权声明:本文为CSDN博主「热爱学习的吉吉」的原创文章,
原文链接:https://blog.csdn.net/u010871962/article/details/78370069

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容