SoloPi 下载与使用指南:不写一行代码,搞定安卓性能测试
关键词:SoloPi 下载、SoloPi 使用教程、Android 性能测试、录制回放、帧率 / CPU / 内存 / 流量采集、一机多控
做安卓测试的同学大概都有过这样的经历:想测一个 App 的内存和帧率,先要装 Android Studio、写 Instrumentation、加埋点、重新打包……一圈下来,测试还没开始,半天已经过去了。
SoloPi(Soloπ)就是为解决这个痛点而生的:它把性能采集和 UI 自动化变成"在手机上点几下"就能完成的事,不需要改被测应用的任何一行代码。这篇文章把下载渠道、安装配置、四大功能实测,以及踩坑经验一次讲清楚。
一、SoloPi 是什么
SoloPi 是蚂蚁集团(Ant Financial / 支付宝)开源的一款无线化、非侵入式的 Android 自动化测试工具,采用 Apache 2.0 协议,源码托管在 GitHub 的 alipay/SoloPi。
它的核心定位可以概括为三句话:
- 不侵入:不需要被测 App 集成任何 SDK、不需要重新打包,纯黑盒采集;
- 无线化:通过 ADB over Wi-Fi 连接,手机不用一直插着数据线;
- 单人可完成:录制、回放、看性能曲线,全在一台手机上完成。
三大核心功能
| 功能 | 说明 | 典型场景 |
|---|---|---|
| 录制回放 | 录下你在手机上的所有点击、滑动、输入操作,生成脚本后可在任意设备上回放 | 冒烟回归、Bug 复现路径固化 |
| 性能测试 | 实时采集 CPU、内存(PSS)、网络流量、FPS 等指标,悬浮窗展示并生成曲线图 | 版本间性能对比、性能卡点排查 |
| 一机多控 | 一台设备操作,多台设备同步执行 | 多机型兼容性验证 |
注意:开源版本不包含"一机多控"功能,因为它当时还不够稳定。需要使用多机同步的话,得走官方商用渠道或自行基于源码扩展。
此外还有几个很实用但容易被忽略的能力:
- 启动耗时计算:能测出 App 的真实冷启动时间,还支持通过广播与 UI 自动化脚本联动;
- 环境模拟:可以限速网络,模拟弱网场景;
- 性能数据导出:曲线图的统计数据(
ff(x)积分、平均值、最小/最大值)可以直接拿来做测试报告。
二、下载渠道
目前有三条比较可靠的下载路径,建议按顺序取用。
1. GitHub Releases(推荐,版本最新)
这是唯一能拿到最新版本的渠道:
- 项目主页:https://github.com/alipay/SoloPi
- 安装包下载页:https://github.com/alipay/SoloPi/releases
截至目前的版本演进情况:
| 版本 | 发布时间 | 说明 |
|---|---|---|
| v1.0.2 | 2026-08-19 | 最新版,修复悬浮窗授权流程 |
| v1.0.1 | 2026-08-18 | 1.x 系列首个版本 |
| v0.12.0 | 2022-05-09 | 长期被广泛使用的稳定老版本 |
| v0.11.2 / v0.11.1 / v0.10.x … | 2019 ~ 2021 | 历史版本 |
v1.0.2 的更新内容集中在权限体验上,非常值得升级:
修复悬浮窗授权流程: - 从系统悬浮窗设置返回后自动复查授权并继续流程 - 避免权限页面快速结束时回调丢失 - Android 6.0 及以上使用公开系统设置入口,并在入口不可用时回退到应用详情页如果你之前遇到过"给了悬浮窗权限仍然不弹性能窗"的问题,升到 1.0.2 基本就好了。
2. 蒲公英(pgyer)
- 下载页:https://www.pgyer.com/solopi
蒲公英上的是0.12.0 (build 1),大小约 5.1 MB,更新时间停留在 2022-11-03。它的优势是扫码即装,适合快速体验或者给不熟悉 GitHub 的同学分发;缺点是版本落后于 GitHub,无法获得 1.x 的权限修复。页面还明确提示"该应用来源于第三方产品,请甄别风险后进行安装",下载时留意一下。
3. 从源码自行构建
适合需要二次开发,或者想自己打一个内部分发包的团队:
macOS 10.14.3 Android Studio 3.2 Gradle 4.4(不建议升级) CMake 3.6.4111459(不建议升级) NDK 15.2.4203819 TargetApi 25 / MinApi 18注意:务必关闭 Android Studio 的 Instant Run,否则编译出来的 App 无法正常工作。这是官方文档专门强调的一条。
源码目录结构大致如下,方便定位功能代码:
src/ ├── app # 应用业务逻辑 ├── shared # 核心功能 ├── common # 应用架构 ├── mdlibrary # ExportService 代理生成 ├── permission # 权限管理 ├── AdbLib # ADB 连接 └── androidWebscoket # Android WebSocket三、安装与环境配置
第 1 步:手机开启开发者模式
- 打开「设置」→「关于手机」;
- 连续点击「版本号」7 次,系统提示"您现在处于开发者模式";
- 返回上一级,进入「开发者选项」,打开USB 调试。
(Android 8.0 及以上,先进入「系统」再找「关于手机」。)
第 2 步:安装 APK 并授权
安装 SoloPi 后首次启动,需要逐个授予权限,缺一不可:
- 悬浮窗权限:性能悬浮窗、录制悬浮球都依赖它,不给就什么都看不到;
- 无障碍服务:录制回放和控件识别依赖它;
- 存储权限:用于保存脚本与数据;
- 后台弹出界面(部分国产 ROM 需要):小米等机型必须打开,否则录制会"录了但没反应"。
第 3 步:配置 ADB 无线连接
性能采集需要走 ADB 通道。先配置 SDK 环境变量:
# 下载 platform-tools 后解压,把路径加到系统环境变量ANDROID_SDK=${sdk path}Windows 10 以上在新的命令行窗口立即生效,老系统需要重启;Linux / macOS 可以用echo $ANDROID_SDK验证。
验证设备连接:
# Windows%ANDROID_SDK%\platform-tools\adb.exe devices# macOS / Linux$ANDROID_SDK/platform-tools/adb devices能列出设备号就说明通了。然后切到 Wi-Fi 调试模式:
# 单设备adb tcpip5555# 多设备需要指定序列号adb-s${serial number}tcpip5555看到restarting in TCP mode port: 5555就成功了,此时可以拔掉数据线。
如果命令行没有返回
device,优先检查:设备驱动是否装好、USB 调试是否打开、部分机型需要把连接模式改成MTP(媒体传输协议)。
四、功能实测:四个维度的性能数据长什么样
下面是我在一台 Android 设备上,对目标应用「夜律 NightHabit」做的完整一轮采集,涵盖内存、CPU、流量、流畅度四项指标。
4.1 内存测试
选择「内存」指标后,SoloPi 会实时展示目标应用的 PSS 内存:
这一屏信息量其实很大,值得逐项拆解:
| 位置 | 内容 | 解读 |
|---|---|---|
| 顶部悬浮窗 | 目标应用:夜律 NightHabit | 采集对象明确 |
| 悬浮窗 | 可用内存 5004MB / 总内存 5942MB | 设备总内存约 5.8GB,可用余量充足,排除系统内存压力干扰 |
| 悬浮窗 | 采样区间 20261002103552 - 20261002103637 | 约 45 秒的采样窗口 |
| 曲线标题 | PSS-main-3163 - Memory | 指标为 PSS,进程号 3163 |
| 统计数据 | ff(x): 1723.96,平均 61.47,最小 52.62,最大 69.60 | 全程波动约 17MB,平均值 61.47MB |
曲线形态也很有代表性:第 8 秒附近有一个 52.62MB 的深谷,随后快速拉升到接近 69.60MB 的峰值,中后段在 58 ~ 62MB 之间趋于平稳。这种"启动期剧烈波动、稳定期平缓"的曲线,通常意味着应用在启动阶段做了较多初始化与内存分配(图片解码、缓存预建等),之后进入稳态。
做版本对比时,最该盯的就是这个稳态区间——如果新版本稳态从 61MB 涨到 80MB,那就是明确的内存劣化信号。
4.2 CPU 测试
切换到「CPU」指标后,可以看到实时负载与曲线:
- 悬浮窗实时值:全局 3.52%,CPU 占用核数0 核,内存占用 0MB;
- 曲线指标:全局占用 - CPU(单位 %);
- 统计数据:
ff(x): 104.79,平均5.51%,最小1.00%,最大27.04%。
曲线特征非常清晰:前 10 秒是启动期的密集波动(4% ~ 10%),第 10 秒后掉到 1% ~ 2% 的低位平稳区,唯独在约第 16 秒出现了一根 27.04% 的孤立尖峰。
这里有两个关键判读点:
- 孤立尖峰通常对应一次一次性动作——页面跳转、大图加载、列表批量渲染。结合内存曲线的峰值位置一起看,很容易定位到是哪一步操作引起的;
- 低位数平稳段就是"稳态 CPU",这才是版本对比时最有价值的数字。平均值容易被启动期的波动带偏,建议以稳定段的平均值为准。
顺带一提,悬浮窗里的「CPU 负载」「CPU 占用核数」「内存占用」都带滑块,可以在采集过程中动态调整阈值,用来做超标告警。
4.3 流量测试
流量维度 SoloPi 支持两个视角:上行速率和累计流量。
视角一:进程上行速率
- 悬浮窗汇总:
total: 下 0.0K / 累计 62.0K,total: 上 0.0K / 累计 58.6K; - 曲线:
进程上行速率-main-5902 - Network,单位 KB/s; - 统计:
ff(x): 0.30,平均0.02 KB/s,最小0.00,最大0.21。
这张图几乎是"安静应用"的教科书样本:绝大多数采样点贴着 0,只有 3 根窄脉冲(约 0.16 ~ 0.21 KB/s),说明应用在这段时间没有持续的网络请求,只发了几次心跳类的小包。
视角二:累计全局下行流量
切换指标下拉框到「累计全局下行流量」后:
- 悬浮窗累计:
下 71.5K,上 68.3K(比上一屏略有增长); - 统计:
ff(x): 496.50,平均24.79,最小0.00,最大46.85(单位 KB)。
曲线是一条单调递增的阶梯:前 2 秒纹丝不动(0 ~ 2KB),第 3 秒突然跳升到约 8KB,随后以每 2 秒一跳的节奏稳定爬升到 44KB 附近。阶梯状说明数据是分批次按需拉取的,而不是持续流式下载——通常对应列表分页加载或图片懒加载。
流量测试最容易被忽略的一点:悬浮窗右侧有个「清零」按钮。想测某个具体操作(比如"点进详情页")消耗多少流量,先在操作前点清零,操作后再读累计值,比看全程曲线精确得多。
4.4 流畅度测试(帧率 FPS)
最后是流畅度,指标下拉框选择「帧率 - FPS」:
这一屏的数据恰恰暴露了 SoloPi 使用中最值得警惕的一类问题。统计数据是这样的:
ff(x): 144416.97 平均值: 7663.68 最小值: 37.00 最大值: 94301.00平均帧率 7663 FPS、最大 94301 FPS——这在物理上显然不可能。对比其他三项指标的合理数值,可以判断这不是应用真的"飞起来了",而是帧率指标采集异常。
常见的成因有这几类,遇到时可以按顺序排查:
- 设备 / 系统版本兼容性问题:不同 ROM 的帧率数据源(如
gfxinfo、SurfaceFlinger 统计)实现差异较大,部分机型会返回累计帧数而非瞬时帧率,导致数值量级失控; - 无障碍服务或悬浮窗权限未完全生效:采集链路缺环时可能读到脏数据;
- 采样窗口过短:本次样本区间
20261002105125 - 20261002105354仅约 2.5 分钟,前两个点的异常值就足以把平均值彻底带偏。
所以这里给一条实测经验:拿到任何 SoloPi 曲线,先做一次"数值合理性"体检——内存是否在几十到几百 MB、CPU 是否在 0 ~ 100%、帧率是否在 0 ~ 120 之间。任何一项明显越界,先排查采集环境,再谈优化结论。否则你可能会拿着 7663 FPS 的数据去开性能评审会。
一个更稳妥的做法:同一指标至少采两轮,交叉验证稳定性;如果两轮差异巨大,说明采集本身不可信。
五、避坑清单
SoloPi 的坑基本都集中在国产 ROM 的权限和 ADB 行为差异上,官方文档里也专门列了一节"Known issues":
| 厂商 | 需要额外处理 |
|---|---|
| 小米 | 开发者选项中「USB 安装」和「USB 调试」都要打开;另外必须给 SoloPi 开启「后台弹出界面」权限(设置 → 应用管理 → SoloPi → 权限) |
| vivo | 若开发者选项中有「USB 安全访问」之类的开关,必须打开,否则录制和一机多控可能不工作 |
| 华为 | 需同时打开「USB 调试」和「仅充电模式下允许 ADB 调试」,否则拔掉 USB 线后 ADB 调试会一并关闭 |
| OPPO | 系统会每 10 分钟自动取消「USB 调试」勾选,导致 SoloPi 不可用;解决办法是保持手机与电脑连接 |
| 魅族 | 若被测应用包含支付等高安全等级功能,需要先关闭系统的安全支付功能 |
| 全部 | 强烈建议关闭系统的「安全输入法」(若有),否则输入密码等文本输入场景可能失效 |
其余几条高频问题:
- 悬浮窗不弹:优先升级到 v1.0.2;其次确认悬浮窗权限和「后台弹出界面」都已授予。
- 编译后 App 不工作:检查是否关掉了 Instant Run,以及 Gradle 是否被升级(官方明确不建议升级 Gradle 和 CMake)。
adb devices没输出:装设备驱动 / 开 USB 调试 / 连接模式改 MTP,三选一排查。- Wi-Fi 调试断连:
adb tcpip 5555在重启或断连后需要重新执行。
六、小结
SoloPi 最大的价值在于把性能测试的门槛降到了"点几下手指":
- 下载:优先GitHub Releases(最新 v1.0.2),要扫码快装可以用蒲公英(0.12.0);
- 配置:开发者模式 + USB 调试 + 悬浮窗/无障碍/存储权限 +
adb tcpip 5555; - 使用:选中目标应用 → 勾选指标 → 悬浮窗实时看 → 结束后看曲线和
ff(x)/ 平均 / 最值; - 心法:先验证数据合理性,再下性能结论;版本对比只看稳态段。
它不能替代完整的性能工程体系(比如方法级 Profiling、内存泄漏检测还得靠 MAT / Android Profiler),但作为快速横向对比、版本回归、日常巡检的工具,它足够轻、足够快,也确实省时间。
参考链接
- SoloPi 开源仓库:https://github.com/alipay/SoloPi
- 版本发布页(APK 下载):https://github.com/alipay/SoloPi/releases
- 蒲公英下载页:https://www.pgyer.com/solopi
- TesterHome 项目页:https://testerhome.com/opensource_projects/82
- 问题反馈专区:https://testerhome.com/topics/node152