4. 环境搭建:安装 Android SDK 与 Systrace 工具

说实话,很多初学者拿到 Systrace 文档,第一反应是装个 Android Studio 就完事了。但实际调试时发现——adb 找不到、systrace.py 跑不起来,甚至 Python 版本都不对。我在项目中踩过这些坑,所以把这章单独拿出来,带你一步步搭一个干净、可控的环境。

4.1 需要准备哪些东西?

看下表,这是我整理的最小必要清单:

组件用途最低版本建议
Android SDK Command-line Tools提供 sdkmanagerv7.0+
Platform-Tools提供 adb、fastbootv30+
Python 3运行 systrace.pyv3.6+
Systrace 脚本抓取 trace 数据随 SDK 包分发
Android 手机/模拟器运行目标 AppAndroid 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 (cmdline-tools) Platform-Tools (adb) Android Platforms (API 34) Systrace 脚本 (systrace.py) Python 3 解释器 Android 设备 / 模拟器 adb 与设备通信,Systrace 依赖 adb

📌 一句话总结:先装 Android SDK 命令行工具 → 用它装 Platform-Tools 和 Platforms → 找到 systrace.py 并确保 Python 3 可用 → 连接设备 → 开抓。