4. 环境搭建:安装 Android SDK 与 Systrace 工具
说实话,很多初学者拿到 Systrace 文档,第一反应是装个 Android Studio 就完事了。但实际调试时发现——adb 找不到、systrace.py 跑不起来,甚至 Python 版本都不对。我在项目中踩过这些坑,所以把这章单独拿出来,带你一步步搭一个干净、可控的环境。
4.1 需要准备哪些东西?
看下表,这是我整理的最小必要清单:
| 组件 | 用途 | 最低版本建议 |
|---|---|---|
| Android SDK Command-line Tools | 提供 sdkmanager | v7.0+ |
| Platform-Tools | 提供 adb、fastboot | v30+ |
| Python 3 | 运行 systrace.py | v3.6+ |
| Systrace 脚本 | 抓取 trace 数据 | 随 SDK 包分发 |
| Android 手机/模拟器 | 运行目标 App | Android 9+ |
嗯,这里要注意:不要装 Android Studio 全家桶。你只是要调试工具,装个 SDK 命令行工具就够了。我见过同事装了 Studio 后环境变量乱掉,折腾半天。
4.2 安装 Android SDK 命令行工具
我个人习惯把 SDK 放在 ~/android/sdk 下,干净好找。先下载 Command-line Tools:
# 创建目录
mkdir -p ~/android/sdk
cd ~/android/sdk
# 下载(Linux/macOS)
wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
unzip commandlinetools-linux-*.zip
# 重命名目录,避免路径太长
mv cmdline-tools latest
Windows 用户去官网下载 zip,解压到 C:\android\sdk 就行。我把脚本放这里了:
# 配置环境变量(Linux/macOS 加到 ~/.bashrc 或 ~/.zshrc)
export ANDROID_SDK_ROOT=$HOME/android/sdk
export PATH=$ANDROID_SDK_ROOT/latest/bin:$PATH
验证安装:
sdkmanager --list
能列出 packages 就对了。我曾经遇到一个坑——Java 环境没配好,sdkmanager 直接报错。sdkmanager 依赖 JDK 8 或 11,你运行 java -version 确认一下。
4.3 安装 Platform-Tools 和 Systrace
用 sdkmanager 安装这两个包:
sdkmanager "platform-tools" "platforms;android-34"
platform-tools 里包含 adb、fastboot。platforms;android-34 是 API 34 的系统镜像,Systrace 脚本依赖它来解析 trace 数据。安装后把 adb 也加到 PATH 里:
export PATH=$ANDROID_SDK_ROOT/platform-tools:$PATH
Systrace 脚本藏在 SDK 的一个角落里。说实话,很多文档没讲清楚怎么找到它。执行:
# 查找 systrace.py
find $ANDROID_SDK_ROOT -name "systrace.py" 2>/dev/null
通常会在 $ANDROID_SDK_ROOT/platform-tools/systrace/ 或 $ANDROID_SDK_ROOT/tools/ 里。如果找不到,可能是 SDK 版本太旧了。我建议直接用最新版 Command-line Tools + platform-tools,保证能拿到。
为了方便,把它软链到 PATH 下:
ln -s $ANDROID_SDK_ROOT/platform-tools/systrace/systrace.py /usr/local/bin/systrace
💡 我的经验:Windows 用户可以用 python systrace.py 直接运行,前提是把 Python 3 装好并加入 PATH。记得用管理员权限运行 cmd,否则某些 trace 标签抓不到。
4.4 验证环境是否正常
跑一个最简单的命令,检查所有组件是否就绪:
adb devices
# 应该看到你的设备(或模拟器)序列号
python3 -c "import sys; print(sys.version)"
# 3.6+ 即可
systrace --help
# 如果不能运行,用 python3 systrace.py --help
如果 adb devices 显示 unauthorized,手机需要授权 USB 调试。你想想看,这是最容易被忽略的一步——连上电脑后,手机上会弹出「允许 USB 调试吗?」勾选「一律允许」,然后点确定。
⚠️ 重要提醒:不要用 sudo 跑 adb 或 systrace。sudo 下环境变量可能丢失,而且某些进程权限会异常。我曾经因为用 sudo 抓 trace,结果抓出来的数据全是空的。
4.5 避坑指南——我踩过的几个坑
- Python 版本冲突:macOS 自带 Python 2,Systrace 脚本明确要求 Python 3。你需要
brew install python或用 pyenv 管理环境。 - sdkmanager 连不上网络:公司内网可能要配代理。在
~/.android/下新建repositories.cfg,内容是sdk-repo-linux=https://mirrors.xxx.com/android/repository/之类。 - adb 版本过老:Android 11+ 的设备,旧 adb 连不上。我建议直接装最新 platform-tools,别用系统包管理器里的老版本。
- Systrace 脚本路径不对:某些教程告诉你直接运行
systrace,但 SDK 并没有把它放在默认 PATH 里。上面我教你的软链方法最靠谱。
还记得有一次,我帮同事排查卡顿问题,他的 Systrace 脚本死活跑不起来。折腾了半天才发现——他用的是 python 命令,系统默认指向 Python 2。切换到 python3 后一切正常。你看,这些问题说出来都很简单,但没经历过就是找不到。
4.6 知识结构总览
下面这张图帮你快速理清环境搭建的依赖关系:
📌 一句话总结:先装 Android SDK 命令行工具 → 用它装 Platform-Tools 和 Platforms → 找到 systrace.py 并确保 Python 3 可用 → 连接设备 → 开抓。