使用adb获取日志
$ adb logcat
$ adb logcat > logcat_1215.log
I/SystemServer( 553): Package Manager
D/SELinuxMMAC( 553): Couldn't find install policy /data/security/mac_permissions.xml
W/PackageManager( 553): Unknown permission com.android.smspush.WAPPUSH_MANAGER_BIND in package com.android.phone
其中 I
D
W
表示日志优先级,类似于 Info
Error
I
:INFO
D
:DEBUG
W
:WARING
E
:ERROR
斜杠后面表示日志的 输出模块
括号中为当前的 进程号
冒号后面内容为 日志主体
拉取 traces.txt
文件(追踪信息)
$ adb pull /data/anr/traces.txt /Users/zhongxin/Desktop
fatal exception
严重异常
ANR IN
很多时候,手机发热发烫。是因为CPU使用率过高,CPU过于繁忙,会导致手机无法响应用户,整体性能降低,用户体验会很差,也容易引起ANR等一些列问题
CPU使用率分为:用户态
系统态
空闲态
CPU使用率=CPU执行非系统空闲进程的时间/CPU总的执行时间
Linux核心每隔固定周期会发出timer interrupt(IRQ 0),HZ是用来定义每一秒有几次timer interrupt
Tick是HZ的倒数,Tick = 1/HZ
即timer interrupt每发生一次中断的时间
Linux核心变数,是一个unsigned long类型的变量,它被用来记录系统自开机以来,已经过了多少tick。
每发生一次timer interrupt,Jiffies变数会被+1
CPU使用率=(用户态Jiffies + 系统态Jiffies)/总Jiffies
/proc/stat
/proc/<pid>/stat
cpu0
表示CPU核心
cpu1
表示CPU的第二个核心
cpu
表示总和
查看模拟器的配置:双核的CPU
查找对于app的cpu使用情况
$ cat /proc/1757/stat
获取当前进程的Jiffies
$ cat /proc/1757/stat | awk -F " " '{print $14,$15}'
https://gt.qq.com/download.html
将日志保存到文件中
拉取至本地
$ adb pull /sdcard/GT/GW/com.sankuai.meituan/5.5.4/20191215/Pcp0_com.sankuai.meituan_20191215100605.csv /Users/zhongxin/Desktop
soloPi无法安装到模拟器,暂不演示
2-5-8原则
后台没有进程,系统会重新创建一个新的进程分配给该应用
后台已有该进程,会从已有进程来启动应用
查找包名
android 7.0以下
$ adb shell dumpsys activity | find "mFocusedActivity"
android 8.0以上
$ adb shell dumpsys activity | find "mResumedActivity"
$ adb shell am start -W -n com.lemon.lemonban/com.lemon.lemonban.activity.WelcomeActivity
程序员角度:获取打开应用到第一帧出现的时间
人工录制后数帧数
$ adb shell screenrecord --bugreport /sdcard/launch.mp4
手机上网所产生的流量数据。
$ cat /proc/net/xt_qtaguid/stats
查看具体app的流量
使用 ps
找到对于应用的 uid
:u0_a35 = 10000+35
lo:网络类型
10035:应用UID
0:后台
132324:接收的流量数据消耗
2321:发送的流量数据消耗
电量影响因素