本文首要记录了我使用systrace生成体系追寻文件的进程。

一、Systrace是啥?

顾名思义,便是体系盯梢,这儿引证官网的一些描绘

Systrace 是渠道提供的旧版指令行东西,可记录短时间内的设备活动,并保存在紧缩的文本文件中。该东西会生成一份陈述,其中汇总了 Android 内核中的数据,例如 CPU 调度程序、磁盘活动和使用线程。Systrace 适用于 Android 4.3(API 级别 18)及更高版别的一切渠道版别,但主张将 Perfetto 用于运转 Android 10 及更高版别的设备。

详细描绘见官网体系盯梢概览。

嗯,不戳,刚看到就要过时了,主张大家不必看了,直接看Perfetto相关的文章得了。

二、那么,怎样装置呢?

1.首要需要装置Python

我们以终端指令行的方式,借由systrace.py脚本,履行体系盯梢相关指令,所以有必要先装置大蛇Python。注意:Python版别有必要是2.7.x系列,高了不行,高版别systrace会直接提示让你换2.7的。。。 本人终究装置了2.7.9版别。装置完成后仍是老样子,装备好Python体系环境变量即可。

Python装置进程这儿就不再赘述。

2.下载Android SDK Platform-Tools

翻开你的Android SDK 目录,进入platform-tools文件夹,居然没有systrace文件夹,是不是很惊喜?检查官网,哦,原来是被官网删除了,问题不大,我们找到release notes,找到是在哪个版别删掉的,然后下载它之前的版别就行了。

Android Systrace 学习记录

那啥,直接学Perfetto吧!

好的,我们直接下载33.0.0版别的渠道东西到本地,然后解压就行了。

3.怎样用Systrace生成体系追寻html呢?

1. 首要翻开终端,cd到你的这个目录E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace

2. 履行指令:

python systrace.py --list-categories

检查你的设备支持的可盯梢类别,假如成功,你将看到如下内容

E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace>python systrace.py --list-categories
         gfx - Graphics
       input - Input
        view - View System
     webview - WebView
          wm - Window Manager
          am - Activity Manager
          sm - Sync Manager
       audio - Audio
       video - Video
      camera - Camera
         hal - Hardware Modules
         res - Resource Loading
      dalvik - Dalvik VM
          rs - RenderScript
      bionic - Bionic C Library
       power - Power Management
          pm - Package Manager
          ss - System Server
    database - Database
     network - Network
         adb - ADB
    vibrator - Vibrator
        aidl - AIDL calls
       nnapi - NNAPI
         rro - Runtime Resource Overlay
         pdx - PDX services
       sched - CPU Scheduling
         irq - IRQ Events
        freq - CPU Frequency
        idle - CPU Idle
        disk - Disk I/O
        sync - Synchronization
  memreclaim - Kernel Memory Reclaim
  binder_driver - Binder Kernel driver
  binder_lock - Binder global lock trace
     thermal - Thermal event
         gfx - Graphics (HAL)
         ion - ION allocation (HAL)
NOTE: more categories may be available with adb root

当然,你大概率看到如下失败信息

E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace>python systrace.py --list-categories
Traceback (most recent call last):
  File "systrace.py", line 48, in <module>
    from systrace import run_systrace
  File "E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace\catapult\systrace\systrace\run_systrace.py", line 41, in <module>
    from devil import devil_env
  File "E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace\catapult\systrace\systrace\..\..\devil\devil\devil_env.py", line 33, in <module>
    import dependency_manager  # pylint: disable=import-error
  File "E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace\catapult\dependency_manager\dependency_manager\__init__.py", line 29, in <module>
    from .archive_info import ArchiveInfo
  File "E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace\catapult\dependency_manager\dependency_manager\archive_info.py", line 9, in <module>
    from dependency_manager import exceptions
  File "E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace\catapult\dependency_manager\dependency_manager\exceptions.py", line 5, in <module>
    from py_utils import cloud_storage
  File "E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace\catapult\common\py_utils\py_utils\cloud_storage.py", line 22, in <module>
    from py_utils import lock
  File "E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace\catapult\common\py_utils\py_utils\lock.py", line 20, in <module>
    import win32con
ImportError: No module named win32con

怎样办呢?没这个模块那就想法安上它,下面是解决办法: 先后履行以下指令

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py
python -m pip install pypiwin32
pip install six

再次履行

python systrace.py --list-categories

你将看到上文中的成功成果。

3.履行如下指令(具体要追寻哪些类目,参照上文中的categories,自己更改这个指令即可)

python systrace.py -o mynewtrace.html sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory

然后操作你要追寻的app,进行你想追寻的操作,完成之后,再次按下Enter键,完毕追寻并生成html陈述文件。

4.检查html追寻陈述

在E:\Android\platform-tools_r33.0.0-windows\platform-tools\systrace中,找到生成的追寻陈述html:mynewtrace.html,翻开chrome浏览器,访问这个网址:chrome://tracing/ , 点击右上角的

Android Systrace 学习记录
按钮,选择这个html文件即可翻开,如下图:

Android Systrace 学习记录
好了,能够快乐地剖析,是哪里导致你的app卡顿了。