要在root用户下
1.获取java进程的PID
ps -ef|grep 【包名|pid】
查找进程
adb shell ps | find "com.beantechs.map.watchdog"
2.获取所有进程:
adb shell ps
3.查看进程堆栈状态
kill -3 PID (会在data/anr/下生成对应文件。来看到对应进程的所有线程的状态)
kill pid :发送15信号,终止进程
kill-9 pid:立即停止进程,危险命令,可以杀死所有的进程,如僵尸进程
4.查看是谁启动了自己
关于Activity的getReferrer()之一:如何在Activity中获取调用者?_爱博客大伯的博客-CSDN博客_getreferrer
最常用
Uri referrer = getReferrer();
Log.w(TAG, "referrer"+referrer);
adb push C:/cc.txt /sdcard/data/.aa.txt 往手机中push文件 如果push不进去 可以先试试 adb root (root) adb remount (挂载)
adb pull /data/anr/trace_00 D:/aa.txt (可能失败 ,可以现在 D盘先建立 aa.txt文件)
------------------------------------------------ctrace---------------------------------------------------------------
开始抓取:
adb shell atrace --async_start -c -b 65536 res workq idle dalvik freq irq am sync binder_driver input hal view sched wm gfx camera
结束抓取:
adb shell atrace --async_stop -z -c -o /data/local/traces/xxx.ctrace
查看ctrace 文件
-----------------------------------------------------开机启动动画流程-----------------------------------------
Android开机动画启动流程 - Anita-ff - 博客园
-------------------------------------------dumpsys surfaceflinger------------------------------
https://blog.csdn.net/feifei_csdn/article/details/81703778
----------------------------------------子线程刷新UI捕获后带来的隐患-----------------------
子线程刷新UI 如果被捕获以后,会导致所有控件刷新流程失效
---------------------------------------Choreographer-----------------------------------------
systrace 中为什么在帧中有出现大量的(Choreographer#doFrame–>animation)没有draw的帧?
*Choreographer(编舞者)在接收到垂直同步信号之后,会回调提前注册好的回调CallbackRecord去执行后续逻辑,如
"input", "animation", "traversal", "commit"等流程,正常的页面刷新,一般都会有 "input", "animation", "traversal"的流程去完成UI刷新
为什么当前systrace 会有很多,(Choreographer#doFrame–>animation)?
:怀疑是应用有去自己注册Choreographer(编舞者)的postCallback添加垂直同步回调的监听,也只注册了animation来处理业务逻辑,导致systrace 中只有Choreographer#doFrame–>animation的流程,如TextView 的跑马灯效果的systrace
---------------------------------------------------systrace如何抓-------------------------------------------
环境配置:
1.安装2.7的python
2.在Android studio sdk下面的platform-tools(检查是否有systrace文件夹)没有就下载(https://download.csdn.net/download/qq_18420641/87424123)
2.使用命令(python C:\Users\admin\AppData\Local\Android\Sdk\platform-tools\systrace\systrace.py gfx input view wm am bionic power sched camera freq idle video -b 20480 -t 4 -o capture.html)
ImportError: No module named six
ImportError: No module named six,已解决_ssuqin001的博客-CSDN博客_importerror: no module named six
下载和安装pywin32
如何下载和安装pywin32(亲测有效)_我的光荣的博客-CSDN博客_pywin32下载安装
在使用命令抓取时可能会报错,根据错误提示处理即可,不多解释
------------------------------------常用日常辅助工具-------------------------------
文档工具Typora
时序图工具 Astah
-----------------------------------------------------------------------------------------
adb shell ps -ef | grep system_server查看对应应用的pid
adb shell ps -T -p {pid} 输出应用所有的线程
-------------------------adb shell 的使用-----------------
看源码
====================
源码中常使用 AttributeCache 来读取应用配置的一些属性