权限与故障排查
WattScope Next 需要五项权限。缺任何一项都不会崩溃,但对应功能会静默失效——所以先对着这张表自查。
权限清单
Root
用途:读取 QPT、cpufreq、/proc/stat、thermal zone、devfreq 等 sysfs 节点。全部采样都在一次 su shell 往返内完成。
缺失表现:首页横幅提示未授予 root;除界面外几乎所有数据都是 --。
排查:
- 在 KernelSU / Magisk 里确认已给
io.github.rusheng920.wattscope授予 root - 应用内点权限中心的「重新检测」,或退出重进
- root 检测优先读取已建立 shell 的真实状态,所以刚在 root 管理器里重新授权后,无需重启应用即可识别;探测完成前沿用 1.5 秒轮询
悬浮窗
用途:显示悬浮球与 OSD。
缺失表现:设置里打开悬浮球没有反应;从通知点进悬浮球时若权限已被回收,应用会捕获异常而不是崩溃。
排查:系统设置 → 应用 → 特殊权限 → 显示在其他应用上层。部分系统需要额外允许「后台弹出界面」。
通知
用途:前台服务保活,展示当前记录状态。
缺失表现:记录过程中切到后台,采样容易被系统冻结、曲线出现断点。
排查:Android 13+ 通知权限是运行时权限,在系统设置里单独授予。
使用情况访问
用途:识别当前前台应用(记录目标、FPS 跟随对象)。
缺失表现:悬浮球记录无法确定目标应用;FPS 图层无法跟随。
排查:系统设置 → 应用 → 特殊权限 → 使用情况访问权限。
电池优化白名单
用途:防止息屏后采样被冻结。
缺失表现:息屏一段时间后曲线断点、记录时长偏短。
排查:系统设置 → 电池 → 应用耗电管理 → 找到 WattScope Next → 允许后台活动 / 无限制。
权限中心
设置 → 权限中心,是一张逐项的授权状态清单:
- 每项显示「已授予 / 未授予」,并带跳转按钮直达对应系统页面
- 页面可见期间每 1.5 秒自动复检,在系统里改完返回就能看到变化
- 顶部用环形进度显示完成度
- root 探测未完成时状态为「检测中」,不会误报为未授权
常见症状对照
| 症状 | 最可能的原因 |
|---|---|
| 首页一直显示「权限未给全」,但权限中心全是已授予 | root 探测尚未完成,等 1–2 秒;仍不对则点「重新检测」 |
分区功耗全是 --,但温度、FPS 正常 | 设备没有 QPT 节点,或 qpt 目录未开启 |
整机功耗显示 0.00 W | 电池驱动 power_now 在放电时不更新;改用电压 × 电流计算,见常见问题 |
| 记录只有 1 秒就自动停止 | 目标应用刚获焦点的前台状态未稳定。已在判定链路上加 5 秒宽限期;若仍出现请提 issue 并附机型 |
| 息屏后曲线断点 | 通知权限或电池优化白名单未给 |
| 游戏里 FPS 恒为 0 | SurfaceFlinger 未上报该 Surface,回退路径也失败;不同游戏渲染路径差异较大 |
| 整机功耗比实测低约一半 | 双电芯机型只上报单路电流,设置 → 采样 → 开启「双电芯机型」 |
仍然不对?
带上这些信息提 issue,定位会快很多:
- 机型 / 平台代号 / Android 版本 / root 方案
- 权限中心截图
- 相关节点的实际内容,例如:
bash
su -c 'ls /sys/class/powercap/qpt 2>/dev/null | head'
su -c 'cat /sys/class/power_supply/battery/power_now 2>/dev/null'