美文网首页
常用ADB的命令

常用ADB的命令

作者: 安仔夏天勤奋 | 来源:发表于2023-05-31 13:32 被阅读0次

    快速寻找Activity/Fragmente及打印Logcat信息的ADB常用命令

    在接手新项目或新手入职,查看功能所在对应的Activity/Fragment时,能快速定位,缩小范围找到业务逻辑实现。
    熟悉常用的Logcat查看命令也能快速定位问题

    ADB查看APP的常用命令

    查看当前界面Activity:

    adb shell "dumpsys activity top | grep ACTIVITY | tail -n 1"
    
    • dumpsys activity top :打印顶层Activity信息
    • grep ACTIVITY:从上个命令结果中过滤出Activity相关信息
    • tail -n 1:从上一步过滤结果中继续过滤出最后一条记录,也就是当前界面(顶层top)activity

    查看当前界面Fragment:

    adb shell "dumpsys activity top | grep '#0: ' | tail -n 1"
    或adb shell "dumpsys activity top | grep '#[0-9]: ' | tail -n 1"
    
    • grep '#0: ' : 当前第一个Fragment

    如果不知道一个Activity里有几个Fragment,使用这命令,Activity信息栈里显示有那些相关的Fragment

    adb shell dumpsys activity top
    
    命令 描述
    adb shell ps 查看进程
    adb shell dumpsys activity 获取当前 Android 系统 Activity 栈中 Activity 信息
    adb shell dumpsys activity top 获取当前 Android 系统 中与用户交互的 Activity 的详细信息
    adb shell dumpsys meminfo 应用包名 查看应用的内存使用情况
    adb shell dumpsys package 应用包名 获取手机里面某个 apk 的应用信息、版本信息
    adb shell pm list package -3 列出所有的应用的包名 (-s:列出系统应用 -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置 -i:列出应用包名及其安装来源)
    adb shell dumpsys activity activities 显示当前所有在运行的任务栈,并可查看栈中所有的 Activity 的列表
    adb shell wm size 手机屏幕分辨率
    adb shell wm density 手机屏幕密度
    adb shell getprop ro.product.model 查看设备型号

    获取连接的设备列表及设备状态

    adb devices
    

    安装APK

    adb install path_to_apk
    
    -l向前锁定应用
    adb install -l your.apk #forward lock application
    -r替换已存在应用
    adb install -r test.apk #replace existing application
    -t测试package标志
    adb install -t test.apk #allow test packages
    -s将应用安装到sdcard
    adb install -s test.apk #install application on sdcard
    -d忽略版本号安装apk
    adb install -d test.apk #allow version code downgrade
    -p部分安装apk标志
    
    • path_to_apk:指apk的绝对路径

    卸载 APK

    adb uninstall 应用包名
    //使用-k参数:保留安装包的数据和缓存目录
    adb uninstall -k 应用包名 
    

    Logcat常用命令

    捕捉手机里已经发生过的崩溃日志,bugreport是支持所有手机日志信息

    D:\bugreport>adb bugreport > 123.txt
    

    输出到指定目录到123.txt文件(过程需要等待几分钟时间),会down下一个所有日志的压缩包。

    在此目录下输入命令:findstr "FATAL EXCEPTION" .\** 找异常所有的对应文件,然后打开对应的文件,然后全文搜索FATAL EXCEPTION,就可以找出问题所在。

    查看命令帮助, 查看一下一些简单的数据格式

    adb logcat --help
    

    使用命令adb logcat的打印:从上而下,优先级最高
    V - Verbose(lowest priority:优先级最低,输出得最多)
    D - Debug
    I - Info
    W - Warning
    E - Error
    F - Fatal
    S - Silent(highest priority,on which nothing is ever printed:优先级最高,啥也不输出)

    清除缓存信息

    adb logcat -c
    
    • 最好的做法的先使用-c清除之前的日志信息,再触发事件,查看最近的日志信息。

    使用tag以后级别失效的原因是没有加上*:S。不加静默所有其他日志的选项就会把其他日志都输出。

    在developers文档有介绍 Logcat 命令行工具 | Android 开发者 | Android Developers (google.cn)

    打印优先级为Error以上的日志信息。

    adb logcat *:E
    
    • *表示任何的Tag
    • E表示优先级

    显示所有优先级Warning以上的日志

    adb logcat *:W *:S
    

    打印时间和优先级为Error以上的日志信息:

    adb logcat -v time *:E *:S
    

    把日志信息保存到电脑上D盘log.txt文件上

    adb logcat -v time *:E *:S > D:\log.txt
    

    如果需要精准到某他APP上,则在其后面添加上 " | findstr app进程ID"

    注意:

    Window环境:findstr
    Mac或Linux环境:grep

    打印某个APP下,且tag为tagName的info级别以上的信息

    adb logcat TagName:I *:S | findstr app进程ID
    

    打印某个APP的某个Tag的logcat信息(级别从E到S)

    adb logcat TagName:E *:S | findstr app进程ID
    

    打印某个APP的某些Tag的logcat信息(级别从E到S)

    adb logcat TagName:E Tag:E *:S | findstr app进程ID
    

    相关文章

      网友评论

          本文标题:常用ADB的命令

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