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 可以看到 当前层级的绘制 看看谁在最上面
- 查看焦点
window和input
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
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 获取当前状态