美文网首页
Android 日志分析常用命令集合

Android 日志分析常用命令集合

作者: lfeilu | 来源:发表于2023-03-30 18:01 被阅读0次

    本博客记录一些常用命令,用于日常开发,问题分析,log分析等。
    一般在开发Android应用,比较少去关系系统日志,最多过滤一下自己应用的日志,看一下生命周期和报错日志之类的,可一旦开发的应用涉及到系统侧,日志抓取和分析就必不可少了。
    工欲善其事,必先利其器。掌握这些adb命令,必能事半功倍!

    日志管理logcat

    1、抓取logcat输出到文件
    adb logcat > log0801.txt
    
    

    获取运行时数据的dumpsys命令

    
    //------------------------------dumpsys  服务名---------------------------------
    2、dump ams所有的信息数据
    adb shell dumpsys activity > ams0801.txt
    3、dump activity任务栈
    adb shell dumpsys activity activities > activities.txt
    4、dump services信息
    adb shell dumpsys activity services
    5、dump provides信息
    adb shell dumpsys activity providers > providers.txt
    6、dump broadcast信息
    adb shell dumpsys activity broadcasts > broadcast.txt
    7、dump intent信息
    adb shell dumpsys activity intents > intent.txt
    8、dump process信息
    adb shell dumpsys activity processed > processes.txt
    9、dump window信息
    adb shell dumpsys window > window0801.txt
    10、dump location信息
    adb shell dumpsys location > location.txt
    11、dump cpu使用情况信息
    adb shell dumpsys cpuinfo > cpuinfo.txt
    12、dump 电池信息
    adb shell dumpsys battery > battery.txt
    13、dump surface flinger 查看图层layer
    adb shell dumpsys SurfaceFlinger > surface.txt
    14、dump 进程的内存信息
    adb shell dumpsys meminfo com.xx.xx > meminfo.txt
    15、网络信息查询
    网络连接 adb shell dumpsys connectivity
    网络策略 adb shell dumpsys netpolicy
    网络状态adb shell dumpsys netstats
    网络管理adb shell dumpsys network_management
    16、查看当前任务栈
    adb shell dumpsys activity | findstr mResumedActivity > resumedActivity.txt
    17、查看系统支持的dump 服务
    adb shell dumpsys -l 
    adb shell service list
    18、dump 具体广播的信息
     // 查看广播
    adb shell dumpsys activity -b| grep APPWIDGET_ENABLED -C10
    
    

    包管理pm命令

    //-----------------------pm 
    1、清空指定应用的缓存
    adb shell pm clear com.xx.xx
    2、查看应用安装目录
    adb shell pm path com.xx.xx
    3、 启用组件 adb shell pm disable/enable <PACKAGE_OR_COMPONENT>
    adb shell pm enable com.test/.MainActivity
    // 禁用组件
    adb shell pm disable com.test/.MainActivity
    //强制卸载 testApk
     adb shell pm uninstall -k --user 0 com.testApk
     4、查看所有已安装的软件包
     adb shell pm list packages
     adb shell pm list packages com.test //包含com.test的软件包
     5、查看所有第三方应用,非系统自带
     adb shell pm list packages -3
     6、查看所有被禁用的包
     adb shell pm list packages -d
     7、授权权限
        // 给软件包授予写外部存储器的权限
        pm grant com.example.app android.permission.WRITE_EXTERNAL_STORAGE
     8、取消权限
        // 撤回软件包读写外部存储器的权限
        pm revoke com.example.app android.permission.READ_EXTERNAL_STORAGE
    
    

    4、dump 界面视图信息

    dump视图层级
    adb shell uiautomator dump sdcard/ui-tree.xml
    
    

    5、adb截图/录制视频

    adb 截图
    adb shell screencap -p /sdcard/screen.png
    adb pull /sdcard/screen.png D:/desktop
    adb 录屏
    screenrecord [options] <save_file>  
    // 录制屏幕, 指定录制宽高为 720x1280, 比特率为 4Mbps, 录制 30 秒
     screenrecord --size 720x1280 --bit-rate 4000000 --time-limit 30 /sdcard/test.mp4
     options参数:
        --help          # 输出帮助信息
    
        --size          # 录制的尺寸, 宽x高, 默认值是设备屏幕的原生分辨率(如果支持), 
                        # 如果不支持, 则使用 1280x720。
    
        --bit-rate      # 设置录制视频的比特率(bit/s), 比特率越高视频质量越高, 
                        # 但文件存储也会变大。例如设置为 4Mbps: --bit-rate 4000000
    
        --time-limit    # 设置最大录制时长(单位为秒), 默认值和最大值均为 180(3分钟)
        
        --verbose       # 录制时显示日志信息
        
    
    

    6、Activity管理器的am命令

    1、 杀掉应用,并重启应用
    adb shell am force-stop com.test
    adb shell am start -n com.test/.MainActivity
    // 终止进程
    adb shell am kill com.test
    //终止所有进程
    adb kill-all
    
    2、 持续监听 app
    adb shell am monitor
    
    3、启动Activity
    am start <intent>
    
    intent 参数:
        -n     // component, intent 组件, 格式为: "包名/组件名", 例如 "com.test/.TestActivity"
        -a     // action, intent 动作, 例如 "android.intent.action.VIEW"
        -c     // category, intent 类别, 例如 "android.intent.category.BROWSABLE"
        -f     // flags, 和 intent.setFlags(int) 方法相同
        
        -d      // data_uri,  intent 数据URI, 例如 "file:///mnt/sdcard/aa.png"
        -t      // mime_type, intent MIME类型, 例如 "image/png"
        
        -e      // 和 --es 相同
        --esn  // 添加 null extra,     格式: --esn extra_key
        --es    // 添加 string extra,   格式: --es extra_key string_value
        --ei    // 添加 int extra,      格式: --ei extra_key int_value
        --el    // 添加 long extra,     格式: --el extra_key long_value
        --ef   // 添加 float extra,    格式: --ef extra_key float_value
        --ez   // 添加 boolean extra,  格式: --ez extra_key boolean_value
        --eu    // 添加 uri extra,      格式: --es extra_key uri_value
        
    // 让手机默认浏览器打开一个网页
        am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d https://www.baidu.com
        
     // 打开电话拨号盘
        am start -a android.intent.action.DIAL -d tel:1008611
        
    //打电话
        am start -a android.intent.action.CALL -d tel:1008611
        
    // 打开微信, 微信(v6.7.3)的主入口 Activity 为 com.tencent.mm.ui.LauncherUI
        am start -n com.tencent.mm/.ui.LauncherUI
        
    // 打开微信(完整的启动 APP 命令)
        am start -n com.tencent.mm/.ui.LauncherUI -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
        
    3、启动服务
    adb shell am startservice -n com.test/.TestService
    
    4、发送广播
    adb shell am broadcast  -a com.test.home_action
    
    
    

    7、dump window的动画/界面转换

    1、
      // Tracing Window Transitions
     开始前输入:
     adb shell cmd window tracing start
     复现后输入:
     adb shell cmd window tracing stop
     把文件pull出来:
     adb pull /data/misc/wmtrace/wm_trace.winscope wm_trace.winscope
     
     2、抓surfaceflinger的状态
    adb shell su root service call SurfaceFlinger 1020 i32 1
    adb shell su root service call SurfaceFlinger 1020 i32 0
    adb pull /data/misc/wmtrace/transaction_trace.winscope
    
    

    8、调用Android系统bugreport

    // adb bugreport
    adb bugreport > bugreport.txt
    // 高版本直接生成zip
    adb bugreport
    
    

    9、安装卸载apk

    adb install <options> <路径>
    options参数:
        -r 替换安装包,保留数据
        -d 允许版本降级(只限debug包)
        -g 授予所有运行权限
    
    adb uninstall <options> <packagename>
    options参数:
        -k 保留数据和缓存目录
    
    

    10、获取device信息 getprop

    getprop                             # 列出所有属性信息
    
    getprop ro.product.manufacturer     # 获取设备的厂商, 例如: HUAWEI
    getprop ro.product.brand            # 获取设备的商标, 例如: HUAWEI
    getprop ro.product.model            # 获取设备的型号, 例如: BLA-AL00
    
    getprop ro.build.version.release    # 获取设备的 Android 版本, 例如: 8.1.0
    getprop ro.build.version.sdk        # 获取设备的 SDK Version, 例如: 27
    
    getprop ro.boot.serialno            # 获取设备的序列号, 例如: 8FE0917B20005668
    getprop ro.board.platform           # 获取设备的 CUP 平台, 例如: kirin970
    
    getprop dalvik.vm.heapstartsize     # 虚拟机进程的分配的初始堆内存大小
    getprop dalvik.vm.heapgrowthlimit   # 虚拟机进程的堆内存增长极限大小
    getprop dalvik.vm.heapsize          # 虚拟机进程的堆内存大小
    
    
    

    11、monkey脚本/自动化测试/压测

    //  monkey <options> <count>
    // 1、python脚本
    python perfsense.py --monkey "monkey -p com.testapk --pct-touch 30 --throttle 1000 -s 200 --pct-syskeys 0 --ignore-crashes --ignore-timeouts -v -v -v 60000 > /sdcard/monkey.txt" --jarperf "com.testapk" -t 32000 
    
    // 2、adb 命令
    adb shell "monkey  -p com.testapk  --ignore-crashes --monitor-native-crashes --ignore-timeouts --ignore-native-crashes --pct-motion 40 --pct-touch 45 --pct-appswitch 5 --pct-nav 5 --pct-majornav 5 --pct-syskeys 0 --pct-anyevent 0 --kill-process-after-error -s 251314251314 -v-v-v --throttle 300 600000000 2>/data/local/tmp/log.txt"
    
    adb shell monkey -p com.test --pct-syskeys -0 -v -v -v 10000
    
    options参数:
    options 参数:
        -p <allowed_package>            # 允许测试的软件包, 可以指定多个 -p 参数支持多个软件包
        -c <main_category>              # 主分类, 可以指定多个 -c 参数
        
        --ignore-crashes                # 忽略崩溃, 继续执行事件
        --ignore-native-crashes         # 忽略 native 崩溃, 继续执行事件
        --ignore-timeouts               # 忽略超时, 继续执行事件
        --ignore-security-exceptions    # 忽略安全异常, 继续执行事件
        --monitor-native-crashes        # 监控 native 崩溃
        
        --kill-process-after-error      # 发生错误时杀死进程
        --hprof
        --match-description <text>
        
        --pct-touch <percent>           # 触摸事件百分比, 例如指定触摸事件比例为 30%, 格式为: --pct-touch 30
        --pct-motion <percent>          # 手势动作事件百分比, 所有事件百分比之和不能超过 100%
        --pct-trackball <percent>       # 轨迹事件百分比 
        --pct-syskeys <percent>         # 系统按键事件百分比
        --pct-nav <percent>             # 基本导航事件百分比
        --pct-majornav <percent>        # 主要导航事件百分比
        --pct-appswitch <percent>       # APP 切换事件百分比
        --pct-flip <percent>            # 弹事件百分比
        --pct-anyevent <percent>        # 其他事件百分比
        --pct-pinchzoom <percent>       # 缩放(捏)事件百分比
        --pct-permission <percent>      # 权限事件百分比
        
        --pkg-blacklist-file <file>     # 
        --pkg-whitelist-file <file>     # 
        
        --wait-dbg                      # 如果 adb 断开, 等待 adb 连接, 直到 adb 恢复连接后继续执行 monkey
        --dbg-no-events                 
        --setup scriptfile
        -f <scriptfile>                 # 指定用于测试的脚步文件, 可以指定多个 -f 参数
        --port <port>
        -s <seed>                       # 产生伪随机事件的种子, 相同的 -s 产生的事件流相同, 格式(可指定多个-s): -s 1
        -v                              # 反馈信息级别, -v 越多个, 输如的日志信息越详细, 最多支持 3 个 -v
        --throttle <ms>                 # 事件之间的间隔(单位为毫秒), 例如 200毫秒 的格式: --throttle 200
        --randomize-throttle            # 随机事件间隔时间
        --profile-wait <ms>             # 
        --device-sleep-time <ms>        # 
        --randomize-script              #
        --script-log                    # 
        --bugreport                     # 
        --periodic-bugreport            # 
        --permission-target-system      # 
    
    

    相关文章

      网友评论

          本文标题:Android 日志分析常用命令集合

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