Android系统定制及adb日志调试方法
Android系统定制基础Android双屏异显深入分析AMS启动流程WMS启动流程分析和介绍Android系统启动流程详解Android Framework学习路线如何用Android手机抓取Sys 2023-3-26 12:23:31 Author: 哆啦安全(查看原文) 阅读量:120 收藏

Android系统定制基础

Android双屏异显

深入分析AMS启动流程

WMS启动流程分析和介绍

Android系统启动流程详解

Android Framework学习路线

如何用Android手机抓取Systrace

Android Framework基础到深入篇

Android修改内核源码绕过防调试检测

Android Audio音频常见问题分析方法

Android8.0至Android13.0源码(AOSP)

KernelSU Android上基于内核的Root方案

Android Q打通应用层到HAL层(HIDL服务实现)

系统定制编译之Android.mk和Android.bp详解

Android系统定制或APP开发定位Crash的几种方法

Android APP应用工程师转Framework工程师(仅此一篇够了)

Android系统定制之Android.mk和Android.bp语法详解(精通版)

Android解锁步骤
adb shell settings put global device_provisioned 1//boot to Home Screen//go to setting -> system -> Developer options -> OEM unlocking
adb reboot bootloaderfastboot flashing unlock//fastboot getvar unlocked//press volume up key
fastboot rebootadb rootadb disable-verityadb rebootadb rootadb remount
adb shell getprop "ro.boot.flash.locked" //返回值0表示已解锁,1表示未解锁
adb root;adb disable-verity;adb reboot //adb多条命令执行,可以用分号隔开
adb shell top | grep app_name //查看app_name的pid进程adb shell pm clear 包名 //清除某个应用的缓存adb shell ps | findstr "com" //查看所有以com开头的进程adb shell pm list packages //查看手机里面所有包名adb shell monkey -p 包名 100 //指定app产生随机事件100次adb shell monkey -p 包名 -v -v 100 //指定app产生随机事件100次并发送详细的activity信息adb shell dumpsys | findstr "mFocusedActivity" //将程序运行在前台,通过命令查看应用包名称

adb logcat | grep "AndroidRuntime" //过滤运行错误,过滤多个字符串,用"\|"分割开adb logcat | grep "AndroidRuntime\|System.err"

logcat日志分析

adb logcat -b eventsadb logcat -b events -dlogcat -b events -v threadtimeadb logcat -b mainadb logcat -b radioadb logcat -b systemadb logcat | grep -iE "settingupdate|recovery|uncrypt" //打印系统级logadb logcat -b events | grep am_  //过滤activity相关日志

打印activity堆栈

adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'adb shell dumpsys activity | grep clock

过滤已有文件的日志

grep -rn "搜索的内容" 路径grep  -rn "Parameter" /home/test/shell/*

logcat日志分析

(1).如果event中出现anr,搜索“am_anr”关键字

(2).如果是logcat log,搜索关键字“ANR”,接着需要看/data/anr下traces.txt文件的栈信息再进行分析

ActivityManager日志相关分析

(1).TagName分析

am_low_memory //位于AMS.killAllBackgroundProcesses或者AMS.appDiedLocked,记录当前Lru进程队列长度。am_pss  //位于AMS.recordPssSampleLocked()am_meminfo  //位于AMS.dumpApplicationMemoryUsageam_proc_start  //位于AMS.startProcessLocked,启动进程am_proc_bound  //位于AMS.attachApplicationLockedam_kill  //位于ProcessRecord.kill,杀掉进程am_anr  //位于AMS.appNotRespondingam_crash  //位于AMS.handleApplicationCrashInneram_wtf  /位于AMS.handleApplicationWtfam_activity_launch_time  //位于ActivityRecord.reportLaunchTimeLocked(),后面两个参数分别是thisTime和 totalTime.am_activity_fully_drawn_time  //位于ActivityRecord.reportFullyDrawnLocked, 后面两个参数分别是thisTime和 totalTimeam_broadcast_discard_filter  //位于BroadcastQueue.logBroadcastReceiverDiscardLockedam_broadcast_discard_app  //位于BroadcastQueue.logBroadcastReceiverDiscardLocked
adb logcat -b events | findstr “am_proc_died | am_proc_start” //查看进程的启动信息,每个进程的启动信息和死亡信息

(2).Activity生命周期相关分析

am_on_resume_called  //位于AT.performResumeActivityam_on_paused_called  //位于AT.performPauseActivity, performDestroyActivityam_resume_activity  //位于AS.resumeTopActivityInnerLockedam_pause_activity  //位于AS.startPausingLockedam_finish_activity  //位于AS.finishActivityLocked, removeHistoryRecordsForAppLockedam_destroy_activity  //位于AS.destroyActivityLockedam_focused_activity  //位于AMS.setFocusedActivityLocked, clearFocusedActivityam_restart_activity  //位于ASS.realStartActivityLockedam_create_activity  //位于ASS.startActivityUncheckedLockedam_new_intent  //位于ASS.startActivityUncheckedLockedam_task_to_front  //位于AS.moveTaskToFrontLocked

(3).Window相关分析

wm_task_moved  //位于TaskStack.positionTask()

Power分析

power_sleep_requested  //位于PMS.goToSleepNoUpdateLockedpower_screen_state  //位于Notifer.handleEarlyInteractiveChange, handleLateInteractiveChangebattery_level: [22,3660,34.8]  //剩余电量22%, 电池电压3.66v, 电池温度34.8℃power_screen_state: [0,3,0,0]  //灭屏状态(0), 屏幕超时(3). 当然还有其他设备管理策略(1),其他理由都为用户行为(2)power_screen_state: [1,0,0,0]  //亮屏状态(1)

Activities分析

1).看焦点activity, 关键字am_focused_activity

2).进程启动历史, 关键字Start proc

3).确认设备是否抖动, 关键字am_proc_died和am_proc_start,检查是否在短时间内出现了大量的这样的log

adb shell dumpsys activity //查询AMS服务相关的信息adb shell dumpsys window //查询WMS服务相关的信息adb shell dumpsys activity s 包名 //查询某个App所有的Service状态adb shell dumpsys activity b 包名 //查询某个App所有的广播状态adb shell dumpsys activity a 包名 //查询某个App所有的Activity状态adb shell dumpsys activity a 包名 //查询某个App的进程状态adb shell dumpsys activity top //当前界面app状态adb shell dumpsys activity oom //查看进程状态

Android音量设置流程及调试方法

dumpsys media.audio_policy //查询系统的流音量

Mixer设备查询

Mixer的一些设备状态对于定位Audio问题非常有帮助,这些设备里包括控制通路开关、音量、增益等;这些配置对于Audio是能够正常使用,起着至关重要的作用

Android系统内置了一些查询和设置命令

amix -c 0 //查询amix -c 0 1 1 //设置amix -c 0 //重新查询之后发现修改的配置已经生效alsa_amixer -c 0 contents //和amix的使用方法类似,只是展现的格式有些差异

推荐阅读

Android adb常用命令

Android adb命令总结

玩转Android adb命令(adb降级)

Android系统开发过程快速查找定位代码的方法

检测车机中ADB远程调试控制Android系统攻击

Android ANR/Crash Log日志分析技巧总结(建议收藏)

Android系统定制/测试(Crash/ANR等Bug/性能分析必备技巧)


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NzUzNzk1Mw==&mid=2247495412&idx=1&sn=af9177ece8b682320699c4b06a41f4a8&chksm=ceb8abbaf9cf22acc98e70d4c3eb5446e7edcfe2f863dc06be3db2aebff369fb3a062093e5f2#rd
如有侵权请联系:admin#unsafe.sh