美文网首页
Android最常用命令-Adb

Android最常用命令-Adb

作者: 呵呵豆 | 来源:发表于2021-09-30 09:16 被阅读0次

    不同操作系统关键字:


    版权声明:本文为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

    相关文章

      网友评论

          本文标题:Android最常用命令-Adb

          本文链接:https://www.haomeiwen.com/subject/pamjnltx.html