Android Framework -adb 常用指令

314 阅读2分钟

image.png

好记性不如烂笔头,我主要老记不住,就梳理一下自己常用的adb 命令。

dumpsys

  • 内存dump
adb shell dumpsys meminfo
  • 可以看到层级树结构 也就是36层图 包括默认 defaultTaskDisplayArea 下挂载的Activity
adb shell  dumpsys activity containers
  • 查看窗口的状态 mDrawState=HAS_DRAWN 才是显示的状态 但是不一定能看到,只是状态到了这个阶段, Surface: shown=true 才是显示中可看到。
adb shell dumpsys window windows //仅所有窗口的详细属性信息
adb shell  dumpsys window //完整的窗口系统信息(全局配置 + 窗口 + 任务等) 可以搜索 LAST ANR 看anr 信息
  • 通过sf 查看 窗口状态 是否有焦点等
adb shell dumpsys SurfaceFlinger  
// HWC layers 可以看到 当前层级的绘制 看看谁在最上面
  • 查看焦点 windowinput
adb shell  dumpsys window 和 dumpsys input 

//adb shell dumpsys window  | grep -E 'mCurrentFocus|mFocusedApp'

//查看焦点的变化
//adb logcat  -b events -c ; adb logcat  -b events | grep input_focus


  • 查看activity
adb shell dumpsys activity activities
  • 查看最上层谁拿到了焦点
adb shell dumpsys  activity |grep "mFocus"

➜  ~ adb shell dumpsys  activity |grep "mFocus"
  mFocusedApp=ActivityRecord{e37e035 u0 com.maimemo.android.momo/.ui.MainActivity t815 mVisible=true mOccludesParent=true mode=fullscreen boundsRect(0, 0 - 1312, 2848)}
    mFocusedWindow=Window{e25d263 u0 com.maimemo.android.momo/com.maimemo.android.momo.ui.MainActivity}
➜  ~
  • 桌面组件查看
adb shell dumpsys appwidget
  • 查看页面结构树
adb shell dumpsys activity componentname  查看页面层级树
 ( 这里是包名+页面名称 比如 adb shell dumpsys activity  com.example.myapplication.MainActivity)
  • 查看window lastanr
adb shell dumpsys window lastanr

image.png

logcat相关

  • evnent相关 比如 过滤evnents 里的anr
adb logcat -b  events|grep    anr  //( 关键字) 过滤其他的也一样
adb logcat -b events - c; adb logcat -b events  
//adb logcat -b events  |grep wm 过滤wm相关 比如焦点生命周期
  • 监听event 并设置输出格式 就是常用的事件触发监听
adb shell  getevent -lrt

-查看 InputDispatcher

adb logcat -s  InputDispatcher
  • 所有日志 如果不加all 那就只打main 级别的,加上 内核层的也会出来
adb log cat -b all 
  • 查看开机启动时间
adb logcat  |grep -i   SystemServerTiming 

其他

  • 查看启动类
adb shell cmd package resolve-activity --brief  com.android.dialer 
  • 关闭/开启 selinux
adb  shell setenforce  0

# 设置为强制模式
adb shell setenforce 1

# 设置为宽容模式
adb shell setenforce 0

adb shell getenforce    获取当前状态