Tidyvo v1.0.8 线上包真机测试报告#
测试日期:2026-08-25
测试对象:Google Play 下载的线上包com.tidyvo.cleaner,版本1.0.8,versionCode9
主测试设备:Huawei TAS-AN00,Android 12 / API 31
结论口径:只有真实操作、系统查询或日志已证明的结果写为“已验证”;证据不完整的项目不写为“已验证”。
结论#
当前 v1.0.8 不建议继续扩大投放,也不建议直接作为下一版本稳定基线。
报告共记录 24 条已确认缺陷:P0 3 条、P1 11 条、P2 10 条;另有产品/体验调整 4 项、待真机回归 1 项。排序规则为:P0 → P1 → P2 → 产品需求 → 待回归 → 已验证 → 系统边界与环境。
P0 为核心功能不可用、频繁崩溃/卡死或重要数据风险;P1 为重要功能、状态或交互明显错误;P2 为视觉、文案、无障碍或易用性问题。
测试总表#
| 顺序 | 优先级/类型 | 模块 | 测试项或问题 | 实际结果与证据 | 处理与验收标准 |
|---|---|---|---|---|---|
| 1 | P0 | 私密空间 | Android 12 导出崩溃 | Huawei Android 12 必现,点击导出后主进程崩溃,无成功或失败结果。日志为 IllegalArgumentException: Primary directory Pictures not allowed for content://media/external/file; allowed directories are [Download, Documents];加密副本在重启后仍存在,未发生私密数据丢失 |
修复 MediaStore 集合、目录和异常处理;API 31/34/36 的导出成功、取消、失败均不崩溃,重新查询后输出与私密副本状态正确 |
| 2 | P0 | 压缩 / Widget / 充电通知 | 3 个入口出现 Unknown route 并导致主进程崩溃 |
视频压缩:video_compress,复现 2 次;Widget“快速扫描”:smart-clean;充电通知点击:charging-auto。可确认是同类路由解析异常;“命名或映射不一致”仅为高概率推断,最终根因待结合线上代码确认 |
修复并增加未知路由安全回退;3 个入口在冷/热进程均进入正确页面,返回栈正确,非法路由不崩溃,Crashlytics 无新增对应崩溃 |
| 3 | P0 | 通知清理 | 权限开启后进入“隐藏通知管理”卡死、ANR 或崩溃 | Samsung、Redmi、Huawei 每次复现;卡死、系统 ANR、App 崩溃三类结果均出现,可能发生在页面打开前或页面显示后 | 排查页面初始化、主线程阻塞和通知数据量;权限开关、空数据、大量通知下,三类设备均可连续进入、操作和退出,无卡死、ANR 或崩溃 |
| 4 | P1 | Settings | 通知状态与系统真实开关不一致 | Huawei Android 12 必现;系统通知已关闭或拒绝,App 仍显示“通知:已允许” | 每次进入设置和从系统设置返回时读取真实开关,页面立即刷新并与系统一致 |
| 5 | P1 | 日志安全 | 生产日志明文输出完整 FCM Token | 生产 Logcat 已捕获,报告中已脱敏 | 生产日志不出现完整 Token;调试日志只保留不可逆短标识或结果码,并扫描 PIN、媒体名、联系人和设备标识泄漏 |
| 6 | P1 | 智能清理扫描 | 取消扫描后当前页无法重新扫描 | Huawei Android 12 必现;取消动作生效,但“开始扫描”保持禁用,只能退出页面再进入 | 取消后显示明确状态并恢复“开始扫描”入口,无需退出页面;旧任务不再覆盖新任务 |
| 7 | P1 | 私密空间 | 导入成功后未说明相册原文件仍存在 | 受控图片导入后生成加密副本,Pictures 中原文件复查仍在;页面只提示“文件已安全导入” |
成功结果明确说明“已创建加密副本,相册原文件仍保留”,不让用户误以为原文件已移动或删除 |
| 8 | P1 | 视频压缩 | 原视频仍保留,结果却显示“已验证删除 1、已保留 0” | 受控视频压缩必现;系统查询确认原视频仍存在 | 结果计数与重新查询后的源视频、压缩输出真实状态一致;保留原视频时不得计为已删除 |
| 9 | P1 | 全局页面 | 系统三键导航栏遮挡底部操作按钮 | Samsung、Redmi、Huawei 所有带底部按钮页面均复现 | 全局接入 Window Insets;所有相关页面在三键和手势导航下完整可见、可点击 |
| 10 | P1 | 视频压缩 | 压缩产物可被系统播放,但 Tidyvo 无法重新扫描到 | 新输出可在系统相册/文件管理中看到并播放;完全退出并重启后,压缩列表和智能清理/大视频扫描仍看不到该输出 | 修复 MediaStore 发布和扫描过滤;重启后源视频和压缩产物均可在系统与 Tidyvo 中查询、打开 |
| 11 | P1 | 通知视觉 | 深色模式下通知文字对比度不足 | 常驻、充电、FCM 三类通知均复现;文字可见但难读 | 三类通知在明暗模式下标题、正文和操作均清晰可读 |
| 12 | P1 | 充电通知 | Google 手机反复插拔时通知文案中英文混杂 | 已复现;Google 手机具体型号、Android 版本和独立复现频次未知 | 在明确测试设备上连续物理插拔,通知语言始终与 App 当前语言一致;与崩溃问题分开定位 |
| 13 | P1 | 充电通知 | Google 手机反复插拔时 App 崩溃 | 已复现;是否与语言混杂同时发生未知 | 在明确设备上连续物理插拔无崩溃、ANR 或重复异常通知;Crashlytics 无新增对应崩溃 |
| 14 | P1 | 视频压缩 | 压缩前预计输出大小与实际结果偏差过大 | 约 200 MB 源视频选择高码率/高质量档,页面预计约 180 MB,实际约 60 MB;源视频精确时长、分辨率、码率、编码格式及输出画质待回归补齐 | 页面预估与编码器共用目标分辨率、视频码率和音频码率;实际结果落入展示的预计区间,并验证高质量档输出画质符合档位定义 |
| 15 | P2 | 私密空间 | 中文环境错误 PIN 显示英文 | 必现,提示为 Incorrect PIN |
中文环境显示准确中文错误提示;其他语言同步核对 |
| 16 | P2 | 视频压缩 | 无权限文案错误要求先运行智能清理 | 必现;错误地把压缩依赖到智能清理 | 文案只说明视频媒体访问权限和授权后的能力,不要求执行无关功能 |
| 17 | P2 | 联系人 | 永久拒绝后缺少权限解释 | 拒绝后直接要求打开系统设置,未说明权限用途、开启位置和开启后的结果 | 权限恢复页说明用途、操作路径和开启后的结果,并可正确返回功能页 |
| 18 | P2 | 视频压缩 | 输出不变小时失败页没有解释原因 | 235.4 KB 低码率源视频的临时结果为 645.4 KB;App 未发布外部输出、源文件保留,见附录 A-6,但页面未说明“结果更大,因此未创建文件” | 无收益单独显示为“无需压缩”而非普通失败;明确未创建新文件且原视频保持不变;更优方案是在转码前判断无收益 |
| 19 | P2 | 视频压缩 | 二级页面顶部标题栏未固定 | 进入视频压缩二级页面后滚动内容,顶部标题栏会随内容滚出可视区域,返回入口和当前页面标题无法持续显示 | 标题栏固定在状态栏安全区下方;仅内容区域滚动,标题和返回按钮始终可见且可操作 |
| 20 | P2 | 联系人 | 同一联系人对重复展示两张合并卡片 | 相同 QA 电话和 QA 邮箱分别命中,同一联系人对重复展示 | 同一联系人对按稳定键去重,只展示一次,并保留命中原因 |
| 21 | P2 | 品牌图标 | Samsung 桌面图标显示为白色单色轮廓 | Samsung 已复现;该设备其他 App 图标正常 | Samsung 桌面图标保持品牌识别度并符合 Adaptive Icon / 主题图标规则 |
| 22 | P2 | 冷启动 Splash | 启动图短暂模糊 | Samsung、Redmi、Huawei 均复现;开发侧已定位,待三机回归 | 三机连续冷启动时 Logo 和背景清晰,无低清占位闪现 |
| 23 | P2 | 常驻通知 | 切换语言后已有通知仍显示旧语言 | 页面语言立即更新,已有常驻通知需重启服务或重新发布后才变化 | 语言切换后重新发布相关通知,页面和通知语言同步 |
| 24 | P2 | 联系人 | 合并报告页顶部标题栏高度过低 | Huawei 已复现;其他机型待回归 | 标题栏高度、状态栏安全区和其他二级结果页一致 |
| 25 | 产品需求 | 原生广告 | 请求期间增加骨架占位 | 当前请求期间没有骨架;明确无填充后广告位会收起。该项由缺陷转为体验需求 | 请求中显示固定高度骨架;成功后替换为广告;明确无填充或失败后收起 |
| 26 | 产品需求 | 私密空间 | 图片、视频列表增加缩略图 | 当前只显示文件信息,缺少快速识别内容的视觉线索 | 增加不泄漏隐私的本地缩略图;具体支持类型由产品确认,锁定和最近任务状态不得暴露内容 |
| 27 | 产品需求 | 私密空间 | 删除私密副本不进入普通 To Clean,且不影响其他副本 |
已确认删除只应作用于私密加密副本;相册原文件已验证不受影响,已导出文件因导出 P0 尚未直接验证 | 删除前说明影响范围;删除后分别查询私密副本、相册原文件和已导出文件 |
| 28 | 产品需求 | 智能清理扫描 | 删除“大文件夹扫描”入口 | 选择大文件夹后,当前体验没有体现扫描范围差异、额外结果或明确用途;常老大确认该入口无产品价值,按产品精简处理 | 从 Smart Clean(智能清理)移除该入口及相关引导;自动扫描和分类结果保持可用,页面不再暗示必须先选择文件夹 |
| 29 | 待回归 | 智能清理扫描 | 多文件分析性能 | 线上历史出现耗时较长;开发侧已修改,但尚未重新真机计时 | 使用固定文件数和固定数据集,分别记录首次扫描与复扫耗时;确认无卡死、ANR 或明显退化后关闭 |
| 30 | 已验证 | 安装与身份 | Google Play 线上包身份 | Huawei 安装包为 Tidyvo 1.0.8、versionCode 9、包名 com.tidyvo.cleaner;APK SHA-256 为 6000b5e61056613d2420318ae2d21a866f59bd2212b3959e78f9ba0628121635,签名为 Google Play 安装签名 |
作为本报告测试基线;后续回归必须重新记录版本、versionCode、哈希和安装来源 |
| 31 | 已验证 | 智能清理扫描 | 自动扫描与完整扫描 | 能进入结果并刷新扫描内容;取消后的状态恢复问题单独列为 P1 | 后续回归保持成功路径,并补取消状态恢复 |
| 32 | 已验证 | 清理删除 | 6 张受控 QA 图片完整删除链路 | 真实重复组保持 0/3,QA 组为 6/6 · 1.3 MB;拒绝系统授权后文件和选择均保留;允许后 Pictures/Tidyvo-QA/ 无记录,结果显示 1.3 MB,Records 为“6 项 · 已删除媒体 1.3 MB · 保留 0 项”,见附录 A-3 |
继续保持选择隔离、授权拒绝、真实删除、删除后复查和 Records 一致 |
| 33 | 已验证 | 视频压缩 | 成功、输出、默认保留和删除原视频 | 12 秒、约 8.8 MB QA 视频生成 3,521,404 B、12 秒可播放 MP4,输出到 Movies/Tidyvo Cleaner/;默认保留源视频,系统确认删除源视频后输出仍存在,见附录 A-4、A-5 |
后续回归同时核对源/输出真实状态、时长、播放、结果计数和净节省空间 |
| 34 | 已验证(有边界) | 视频压缩 | 压缩中取消 | 242.7 秒视频压缩至 19% 时取消;源文件保留,外部输出目录无新增文件;内部缓存半成品因生产包不可 run-as 尚未验证 |
测试包补查内部缓存;取消后按钮、路由和下一次任务状态正常 |
| 35 | 已验证 | 视频压缩 | 无效输出保护 | 235.4 KB 源视频生成 645.4 KB 临时结果时,App 未发布外部输出且保留原文件,见附录 A-6 | 保留“实际至少缩小 5% 才发布”保护,并增加压缩前收益判断和清楚反馈 |
| 36 | 已验证 | 联系人 | 扫描、合并和撤销 | 2 个本地 QA 联系人可识别并进入预览;合并后两个 raw contact 指向同一 contact;撤销后恢复两个独立 contact,见附录 A-7。测试后均从系统可见联系人表移除 | 保持系统状态、页面结果和撤销快照一致;补批次部分失败 |
| 37 | 已验证 | 私密空间 | 导入、截图保护、锁定和删除语义 | 导入生成加密副本且相册原文件保留;等待数秒已有进度,按正常加密/复制耗时处理;FLAG_SECURE 截图为 0 字节;后台后重新要求 PIN;删除取消保留加密副本,删除确认只删除私密副本 |
保持数据边界;修复导出后补验已导出文件独立性 |
| 38 | 已验证 | Widget | 添加和存储值刷新 | Huawei Launcher 可添加;删除约 176 MB QA 视频并重开 App 后,Widget 从“已用 173.3 GB · 可用 55.2 GB”更新为“已用 173.2 GB · 可用 55.4 GB” | 保持真实存储值刷新;点击跳转问题按对应 P0 回归 |
| 39 | 已验证(模拟电源) | 充电动画与通知 | 三种样式、后台和息屏通知 | 三种样式可切换;Huawei 使用 Battery Service 模拟接电,进程存活时发布频道 charging_animation_v2、通知 ID 40,标题“已连接充电器”、正文“点按打开充电动画” |
物理插拔、通知点击和锁屏视觉仍按未验证项及对应的路由、语言和崩溃问题回归 |
| 40 | 已验证 | 基础页面 | Home、一级 Tab、语言和隐私政策 | Home、To clean、Compress、Tools 可切换且结构一致,见附录 A-1;Settings 中英文即时切换通过;Privacy Policy 可打开 https://deep.tidyvocleaner.com/privacyPolicy.html |
保持现有通过链路;通知状态不一致问题单独修复 |
| 41 | 已验证(局部) | 通知与后台 | 组件存在和局部调度证据 | 存在 tidyvo_alive_low/default/high 等频道;KeepAliveService 前台运行;persisted Job 约 24 分钟调度一次,WorkManager 曾 RETRY,约 8 小时后存在 RTC_WAKEUP Alarm;私密空间导出崩溃后单次记录服务恢复 |
只能证明组件和单次行为存在,不能表述为永久保活或可靠拉活 |
| 42 | 已验证(局部) | Analytics / Crashlytics | SDK 初始化和静态字段 | Firebase Analytics、Crashlytics 已初始化;日志出现 HTTP 200,只能证明请求返回;APK 可见 screen_view、session_start、ad_click、ad_format、ad_position、ad_unit_id、campaign_id、message_id 等字段 |
后续必须用 DebugView、后台归档和中台落库证明真实闭环 |
| 43 | 已验证 | UI/UX | 整体视觉一致性 | 首页、一级导航、工具卡片和二级页面的品牌色、圆角和图标语言基本一致 | 无障碍、三键安全区和个别标题栏按对应缺陷回归 |
| 44 | 系统边界 / 非缺陷 | Force Stop | 强行停止后不再触发充电通知 | Android Force Stop 会停止 App 进程、服务和大多数系统唤醒,直到用户主动打开;本轮结果符合系统能力边界 | 不列 App 缺陷;验收说明中明确 Force Stop 边界 |
| 45 | 系统边界 / 非缺陷 | 广告 | 多场景全屏广告与流程打断 | 首次启动、普通冷/热启动、私密空间、Settings 和充电动画附近均观察到全屏广告,见附录 A-2;按已确认口径,触发、流程打断和频控属于产品策略行为,不计 Bug | 广告功能只在专项中验证请求、展示、点击和收入;原生骨架按产品需求处理 |
| 46 | 系统边界 / 非缺陷 | 私密空间 | 导入等待数秒 | 页面已有导入进度反馈,按正常加密/复制耗时处理 | 保持进度与结果反馈;不列性能缺陷,除非固定数据回归出现异常增长 |
| 47 | 系统边界 / 非缺陷 | 保活口径 | 组件存在不等于“全部保活” | 前台服务、JobScheduler、WorkManager、Alarm 和一次崩溃恢复,均不能证明永久保活、可靠拉活或 Force Stop 后自动恢复 | 后续按普通进程死亡、重启、Doze、OEM 清理分别记录,不使用笼统结论 |
| 48 | 环境与证据边界 | 补充设备 | Samsung、Redmi、Google 手机证据范围 | 三台补充设备使用同一 Google Play 1.0.8、versionCode 9;具体型号和 Android 版本未记录,只作为对应问题的人工复现证据,不代表完成整套回归 |
后续补齐设备型号、系统、导航方式和逐项结果;主测试机 Google Play services 偏旧,FCM/Firebase 结果不可直接外推 |
| 49 | 环境与隐私 | 受控数据 | 测试数据与隐私处理 | 创建 6 张 QA 图片、5 个受控源视频、3 个压缩输出和 2 个本地 QA 联系人;未选择或删除真实媒体;未保存真实联系人、真实媒体文件名或真实媒体截图 | 后续继续使用可识别、可恢复的受控数据,不写入真实用户内容或设备敏感标识 |
| 50 | 测试恢复 | 设备与项目 | 测试结束后的恢复状态 | QA 图片、5 个源视频、3 个压缩输出及 MediaStore 索引已删除并复查;QA 联系人已移除;私密副本和原受控图已清理;充电通知、Analytics 调试属性和权限已恢复;Widget 实例已移除;App 已 Force Stop。未清空 App 历史 Records,避免误删既有记录 | 本轮只修改测试报告;未修改代码、未创建 GitHub Issue、未提交 Git |
截图附录#
截图集中放在文档末尾,正文通过附录编号引用。
A-1 工具页#
A-2 充电动画流程中的全屏广告#
A-3 6 张 QA 图片清理成功#
A-4 QA 视频压缩成功#
A-5 原视频删除后的压缩结果#
A-6 输出不变小时的失败结果#
A-7 QA 联系人合并预览#