准备工作:开启开发者选项与USB调试

做 SystemUI 启动耗时分析,第一步不是写代码,是先把环境搭好。我见过不少同学拿着手机就想抓 trace,结果发现开发者选项都没开,adb 连不上——这就尴尬了。

这一节我们把这些基础操作搞定。你想想看,如果连调试通道都不通,后面所有手段都用不上。来,咱们一步步走。

为什么必须开启开发者选项?

Android 系统默认把很多调试接口藏起来了。说白了,就是为了防止普通用户误操作。但我们做系统开发,需要访问这些接口:

  • 抓取 trace:需要 systrace 或 perfetto 权限
  • 查看日志:logcat 的输出级别限制
  • 模拟输入:用 adb shell input 操作 UI
  • 高级调优:比如窗口动画缩放、过渡动画缩放

开启开发者选项,就是给系统一个信号:“我是开发者,请给我完整权限。”

开启步骤(以 Android 13 为例)

操作非常简单,但不同厂商略有差异。我习惯记一个通用方法:

  1. 进入「设置」→「关于手机」
  2. 找到「版本号」(Build Number),连续点击 7 次
  3. 提示“您已处于开发者模式”
  4. 返回「设置」主页面,底部多出一个「开发者选项」
小技巧:如果点了很多次还没反应,看看是不是设置了锁屏密码?有些系统要求先验证身份。

关键开关:你需要打开什么?

进了开发者选项,里面一堆开关。别慌,我们只开几个必要的:

开关名称 用途 建议值
USB 调试 允许 adb 连接设备 开启
“仅充电”模式下允许 ADB 调试 连接 USB 后默认使用 adb 开启(可选)
窗口动画缩放 影响动画耗时,调小便于观察 0.5x 或关闭
过渡动画缩放 同上 0.5x 或关闭
动画程序时长缩放 控制动画整体时长 0.5x 或关闭
显示布局边界 调试 UI 层级时可用 按需开启
警告:千万不要在生产机上随便开「模拟点击」或「强制使用 GPU 渲染 2D 图形」——我曾有一次因为开了这个导致机器界面闪烁,还原才发现是自己手滑。

USB 调试的坑与避坑指南

USB 调试是 adb 的基础。很多人开了却发现连不上,原因无非这几条:

  • USB 线不行:有些线只支持充电,不支持数据传输。换原装线试试。
  • 驱动没装:Windows 上需要安装对应厂商的 USB 驱动。Mac 和 Linux 一般免驱。
  • 授权弹窗没点:第一次连接时手机会弹 RSA 密钥确认框,必须点「允许」。

我个人习惯,拿到新手机第一件事就是插线、开 USB 调试、点「始终允许这台计算机」。避免后来每次都要确认。

验证调试环境

开好之后,我们验证一下。打开终端,输入:

adb devices

正常输出类似:

List of devices attached
ABCDEF123456	device

如果显示 unauthorized,说明手机没授权。看看手机屏幕,确认 RSA 指纹。

如果显示 offline,可能是线的问题或者 adb 版本太老。重新拔插或升级 adb 试试。

我遇到过最奇葩的一次:某厂商定制系统,USB 调试默认被系统策略禁止。必须进工程模式才能解开。后来我直接写了个脚本把常用套路都试了一遍。

启动耗时分析的特殊需求

我们分析 SystemUI 启动,光有 adb 还不够。还需要开启一些 profiling 相关的开关:

重点开关:
  • 系统跟踪(System Tracing):在开发者选项底部,可以开启「记录跟踪」。建议打开,并选择「长按音量键开始跟踪」或「快捷设置磁贴」。
  • GPU 呈现模式分析:选择「在屏幕上显示为条形图」,可以直观看到每一帧的绘制耗时。
  • 不保留活动:分析冷启动时建议关闭(默认关闭),否则每次切后台 activity 都被销毁。

还有一个容易被忽略的点:屏幕超时时间。分析过程中如果屏幕自动熄灭,某些 system_server 的锁会释放,影响结果。我习惯把休眠时间设成 30 分钟或永不。

本章知识体系一览

环境准备核心流程与开关关系 开启开发者选项 开启USB调试 驱动安装 & 授权 验证 adb devices 开启系统跟踪 调整动画缩放 调试环境准备就绪 说明:不同系统版本/厂商可能有细微差异,但核心流程不变。 Windows用户若遇到驱动问题,建议使用“Android Studio”自带驱动或设备厂商官方工具。

一点补充:关于厂商定制

小米、华为、OPPO 等厂商经常魔改开发者选项。比如有的把「开发者选项」直接隐藏,需要特殊暗码才能进入。我曾在某款手机上找了半小时才发现入口在「设置→更多设置→开发者选项」。如果你找不着,直接搜“版本号”或者去官网查一下。

还有一点:国产 ROM 有时会默认关闭 adb 的 root 权限。不过我们做启动耗时分析,不需要 root,普通 shell 权限就够了。除非你想直接操作 /data/local/tmp 下的 trace 文件——那时可以开 root 调试,但平时别开,安全第一。

常见问题快问快答

  • Q: adb devices 找不到手机? A: 换线、重启 adb server(adb kill-server后adb start-server)、检查驱动。
  • Q: 点了“允许”后仍然 unauthorized? A: 重新拔插,或在手机上撤销USB调试授权后重新授权。
  • Q: 系统跟踪无法启动? A: 看看存储空间够不?或者有没有其他app占用 trace 接口。

环境准备这块看似简单,但出了错后面全白费。我建议你花 10 分钟把这一步走通,然后跑一遍 adb shell dumpsys 检验一下权限。后面咱们就开始抓 trace 了。