# 更新记录 ## 未发布 · 读屏冲突排查与找机位通知保护 2026-10-26 用户反馈:0.2.3 仍无法读屏,同时关闭 GKD 和自动记账后可以继续;另报小米 18 Pro 系列“找机位通知”被误关。**以下改动在最新源码中,0.2.3 安装包尚不包含。** - 修正“无需关闭无障碍服务”的绝对表述。读屏连接失败时只读检查无障碍总开关和服务数量,限时 3 秒,不收集服务名单到诊断;读取失败仍保留原始异常。 - CLI、客户端读屏检查和完成页明确提示逐项排查 GKD、自动记账等自动化 / Shizuku 功能;必要时由用户暂时停用对应服务,保留依赖的辅助服务,结束后按需恢复。程序不会自动关闭无障碍、强停其他工具或重启手机。 - 找机位、机位推荐等功能通知加入保护:扫描、GUI 全选、旧清单执行和点击前复核均覆盖;受保护项目不计入剩余营销渠道。已有关闭状态不会被自动开启,但明确执行的单渠道还原仍可用。 - Mac 与 Windows 均通过 123 项回归,原生 GUI 冒烟增加模拟失败排查卡片的显示检查;Windows [打包验证](https://github.com/rddmwmddr/android-ad-cleaner/actions/runs/40213007991)通过,未上传 Release。真实包名 / 渠道 ID 和反馈设备复测仍待补充,不能将用户同时暂停两个工具后的成功写成某一个工具根因已确定。 排查顺序、实现边界与误关恢复方法见[读屏冲突与功能通知保护](docs/11-读屏冲突与功能通知保护.md)。 ## 未发布 · 一加 ColorOS 14 实测与兼容修复 2026-10-25 在一加 Ace 2 Pro(PJA110)、`PJA110_14.0.0.812(CN01)` / Android 14 上完成实机操作与回读。**以下改动在源码中,现有 0.2.3 安装包不包含本节新适配。** - 修复 ColorOS 14 独立通知设置页识别;仍核对渠道标题、明确开关,禁止操作应用通知总开关。23 个营销渠道关闭并回读通过,混合付款、直播和含糊渠道保留;新增中英文付款渠道排除回归。 - 新增 `recipes/oneplus-PJA110/recipe.py`:下拉搜索、商店个性化、商店推广位、浏览器四段。3 个个性化推荐开关关闭,机主联网后再关闭并跨页回读 6 个商店推广位,其他服务开关保持原样。 - 首屏少量文字不再视为空白广告;冷启动空白最多等待 8 秒,不盲按返回。读取及弹窗处理前后核对前台,系统权限申请只点明确的拒绝按钮。 - 商店沿用先停止再从桌面启动的方式,浏览器使用实测 Activity,避免复用旧子页;以实际前台核对设置入口。脚本缺目标或回读失败时返回非零,已成功改动日志仍保存。 - 经机主明确同意,挂起 OPPO 广告服务、乐划锁屏和两个快应用组件,并核对状态。旧系统会重新拉起部分进程,收尾广告服务仍运行,不能宣称彻底停止。商店、下拉搜索和负一屏未挂起;还原命令已写入实测文档。 - 通知差异如实记录:首次关闭后的 368 个既有渠道中,其余状态及应用总开关不变;最终复查仍有 23 个目标关闭、所有总开关不变,但天气提醒重要级别从 4 变为 3(仍开启,原因未确认),新增渠道共 13 个。 - 系统逐应用广告跟踪、负一屏、主题、视频等仍有未适配入口;不能把上述有限范围写成整机全部去广告成功。 Mac 与 Windows 均通过 112 项设备无关回归,Windows 打包及原生 GUI 冒烟通过;最终真机完整复跑四段,155 秒确认 9 项关闭、调整 0 项、失败 0 项。手机原始备份与日志留在本机,未上传。完整环境、应用版本、保留项、CI 记录及还原方法见[一加旧系统实测](docs/10-一加旧系统实测.md)。本轮不是 Windows 连接该手机的实测,也不能代替小米 OS4.0.27 的复测。 ## 0.2.3 · 2026-10-25 Windows 0.2.2 的完整反馈已确认:小米 18 Pro Max(M154FF)、OS4.0.27.0.XEOCNXM / Android 17 抛出 `AccessibilityServiceAlreadyRegisteredError`,即手机 UiAutomation 已注册,新连接被拒绝。App 广告与营销通知的实际点击都依赖读屏,因此一起失败;不是扫描功能退回旧实现。**具体占用进程尚未确定,不能把它直接归因于 Android 17 或某个 App。** - 补齐读屏会话生命周期:启动失败、操作异常和正常退出均关闭本次持有的 adb 连接,等本次进程和服务退出,再释放本机设备锁;未由本次启动的服务不主动停止。 - 同一电脑、同一设备的去广告读屏进程互斥。只对“已注册”错误清理本次失败连接后重试一次,处理短暂的注销衔接;持续占用就报失败,不无限等待或按名字批量杀进程。 - 持续冲突时给出可执行的恢复步骤:退出旧版及其他自动化工具;仍失败请机主手动重启手机,解锁后只开一个客户端并运行「检查读屏连接」。不自动重启手机,不自动停用无障碍,不清除应用数据。 - 首次读屏冲突后,跳过本次计划中后续的读屏步骤,保留最初的完整诊断,继续执行收尾。界面与诊断区分「失败」「跳过」;收尾不再写“去广告已经做完”,需要继续排查时提醒先保留 USB 调试。 - 固定 uiautomator2 为已验证的 3.7.1,避免构建时依赖漂移。保留 0.2.2 的 adb 只读扫描、完整诊断及此前修复。 **验证**:91 项回归通过,覆盖真实的跨进程锁竞争和异常退出后释放、注册冲突有限重试、初始化失败清理、不停止复用服务、首个诊断保留和失败收尾。Android 15 模拟器连续三次只读连接成功;外部自动化占用时复现相同 `already registered` 错误,返回失败后外部服务仍正常;释放占用后重连成功。两个去广告读屏任务同时运行时,第二个被拒绝,首个仍可正常读屏。未点击或更改手机广告开关。 安装包验证:Windows [Actions #40198943037](https://github.com/rddmwmddr/android-ad-cleaner/actions/runs/40198943037)(代码 `cb08d5c`)通过 91 项回归、打包后两层 CLI 调用、原生 GUI / 教程图片 / JS API 和安装包生成。Mac Apple 芯片及 Intel / Rosetta 最终包通过原生 GUI、两层 CLI、签名、公证;两种打包程序都通过模拟器实际读屏检查,Apple 芯片连续三次通过。Intel 真机和反馈者 Windows 电脑仍待测。 **支持边界**:尚未在反馈者 Windows 11 / OS4.0.27 手机上重跑。此前遗留或外部占用不保证仅换安装包就消失,必要时需先手动重启手机。没有新增系统权限或自动终止其他工具的功能。排查依据与步骤见[客户端说明](docs/08-桌面客户端.md#提示-accessibilityservicealreadyregisterederror--already-registered)。 ## 0.2.2 · 2026-10-25 针对 Windows 0.2.1 / Xiaomi 18 Pro Max / HyperOS 4.0.27 的后续反馈:通知扫描显示 `QueryController / UiDevice / Main.runServer` 堆栈。截图只有末尾,无法确定手机端 UiAutomation 初始化失败的具体原因。本版修复扫描不必要依赖读屏服务、完整错误丢失的问题;**不把它写成已完成 4.0.27 真机适配**。 - 通知扫描、状态复查改为直接通过 adb 读取;无需启动 UiAutomation。已经达到目标状态的清单也不启动读屏服务、不操作页面。需要实际拨动开关时仍须读屏成功,失败不会算成功。 - 执行前可点「检查读屏连接」,仅检查连接和页面是否可读,不点击开关、不输出页面内容。命令行:`run.py -s <序列号> ui-check`。 - 扫描与执行失败保留完整异常,界面可展开、复制;本地保存在数据目录的 `logs/last-error.txt`。复制诊断附带最近失败的完整原因、HyperOS 版本,替换序列号及错误中的当前用户目录,不再只显示末尾 600 字。 - CLI 捕获异常并返回失败,保留原始原因,避免再附加 PyInstaller 的笼统错误。补充打包程序 `run.py → chan_fast.py` 两层调用测试:不存在的清单应及时失败,不能再打开窗口或接触手机。 - 标签构建只给 Release 草稿补缺少的文件,不覆盖已公开安装包和已有校验值。 **验证**:78 项回归通过,包括“UiAutomation 完全不可用时仍可扫描 / 复查”、实际关闭仍要求读屏、完整原因保留及脱敏。Android 15 模拟器的实际扫描和只读读屏检查通过。本版没有修改机型广告开关路径,没有在反馈者的小米 OS4.0.27 上重跑。 安装包验证:Windows [Actions #40195500808](https://github.com/rddmwmddr/android-ad-cleaner/actions/runs/40195500808)(代码 `9de8e6b`)通过 78 项回归、原生 GUI / 图片 / JS API、两层 CLI 分发与失败退出、安装程序和免安装包生成。Mac Apple 芯片 / Intel 两种最终包均通过签名、公证、Gatekeeper 及原生 GUI / 两层调用测试;Intel 使用 Rosetta,Intel 真机仍待测。Apple 芯片打包程序的模拟器只读通知扫描通过。 **仍需反馈者复测**:安装 0.2.2 后,先确认通知扫描,再点「检查读屏连接」。若失败,点「复制完整诊断」提供首个 `Exception` / `Caused by` 及完整堆栈;不要只截最后几行。原先 0.2.0 执行时再次打开窗口属于已修复的 CLI 分发问题,不能直接当作本次初始化失败的同一原因。 ## 0.2.1 · 2026-10-25 这是 0.2.0 之后的修复版本,提供 Mac Apple 芯片、Mac Intel、Windows 安装版和免安装版。[下载 v0.2.1](https://github.com/rddmwmddr/android-ad-cleaner/releases/tag/v0.2.1)。旧版不会自动升级;替换程序即可继续使用原来的备份目录,无需删除备份。 ### 修复了什么 | 问题 | 0.2.1 的处理 | |---|---| | Windows 打开后显示 127.0.0.1 超时(#18) | 使用明确的 `file://` 地址加载本地页面和图片,不再依赖 Bottle 的本地 HTTP 服务;新增实际 GUI、图片和 JS API 冒烟测试,Windows 构建也执行此项 | | 小米 10 横屏热榜漏开关、部分设置未遍历(#21) | 读屏时刷新屏幕尺寸,旋转后拒绝使用旧坐标;浏览器优先识别顶部设置图标,避免点击正文「我的」;同页主开关和热榜子页都会处理;补充「天气视频卡片」 | | 老系统不支持 msa 断网却显示成功(#21) | 先检查接口,再核对包联网规则和防火墙状态;兼容实机 `包名:allow/deny` 回读。不支持或回读失败时明确报告部分完成并返回失败,保留挂起还原记录 | | 荣耀服务通知被列为营销候选(#24) | 排除实时活动、赛事、护眼及告警;界面默认不选「其他 / 普通通知 / 推送通知」等含糊类别。仍开着的渠道会显示失败,不把尝试次数当成功数 | | Mac Intel 签名后界面启动卡住 | 发布检查发现 PyObjC / libffi 回调缺少运行权限;仅给 Intel 主程序补充必要权限,保留 hardened runtime 和库签名校验,重新签名、公证并做 Rosetta GUI 冒烟测试 | | 安装包混入本地调试文件 | Mac / Windows 共用明确的发布资源清单,排除运行日志、缓存、备份和测试机型;公证脚本中的失败会中止构建 | | 荣耀通知扫描截图越界(#16) | 对照截图的真实尺寸检查取样范围;分辨率不一致或越界时跳过未知状态,不猜成关闭、不抛 `IndexError` | | HyperOS 渠道深链失败、vivo 误关整应用通知(#7、PR #19 / #20) | 确认设置页身份、渠道标题和明确的通知开关;HyperOS 尝试从应用通知页进入渠道详情;vivo 的 `systemuiplugin` 页面直接拒绝。每次点击后回读渠道状态,应用总开关异常变化时停止整批 | | 通知清单首行被跳过、还原失败仍成功 | 接受 UTF-8 BOM / CRLF;清单格式错误会报行号。关闭与还原失败均返回失败;扫描失败不覆盖已有清单,客户端显示错误与重试入口 | | Windows 备份路径跨盘报错 | 程序与备份在不同盘符时显示实际路径,不再因计算相对路径抛异常;该问题由本轮 Windows 云端回归发现 | | vivo 隐私空间污染备份、快应用无法挂起(PR #20) | 包清单限定机主 `--user 0`;vivo / iQOO 检测到快应用服务开关时保存原值后关闭,回读验证,重复操作不覆盖原值。按设备匹配备份还原,无备份时不擅自打开;其他品牌成功挂起后再强停进程(#9) | | 小米设置搜索卡住、反复输入 `%` | 小米机型脚本直接走菜单进入广告服务。通用搜索先确认可见且获得焦点的输入框,再限时输入并核对文字;不再保留可能持续输入的后台线程,也不把输入框当搜索结果点击 | | vivo / iQOO 客户端清单链接打不开 | 按手机品牌打开具体清单文件,并编码中文路径;未知品牌打开清单目录说明。也覆盖小米 / Redmi / POCO、OPPO / 一加 / realme、荣耀 | | 打包客户端执行时再次打开窗口,任务没有进入引擎 | 子进程统一通过 `--cli` 入口运行 `fast.py`、`chan_fast.py`,保留 Windows 的 UTF-8 输出处理 | | 小米脚本在多个 App 找不到入口 | 补齐手机管家、全局搜索的直达入口,处理主题启动包跳转、更多菜单、商店个性化服务子页、搜索应用推荐和热榜子页、天气城市管理入口;新增识别天气和日历的「内容推广」 | | 页面切换后误读旧页面、空页面或其他 App | 启动时核对结果和前台包;等待非空页面稳定;只滑动可滚动区域,滑动离开当前页面时停止该段;不把带开关的设置面板当弹窗关闭 | | 开关标题或状态识别错误 | 按所在行和无障碍标签识别标题,过滤屏幕外节点、单选按钮和文字轮播控件;「限制广告跟踪」等保护开关设为开启。点击后开关消失时不误报成功、不重复点旧坐标 | | 失败后仍显示成功,或插电常亮未还原 | 通知渠道、快应用挂起失败会报告失败;机型脚本退出或异常时还原运行前的插电常亮值。每页日志分别记录核对数和调整数 | ### 机型与兼容性 - **小米 HyperOS**:继续兼容 Xiaomi 18 Pro Max 和社区提供的 18 Fold 入口差异。浏览器首页由机主决定;自动更新、常用应用、天气预警等保留项维持原规则。 - **vivo OriginOS**:新增 X300 Ultra(V2547DA)的 OriginOS 6 脚本,并识别 V2547A 型号别名;整段自动执行仍待真机回归。根据 PR #20 的新证据,通知工具不再尝试操作 vivo 的应用级总开关;快应用优先使用可读到的系统服务开关,不扩展到智慧生活等功能包。 - **同品牌参考脚本**:没有本型号脚本时可主动选择参考脚本(命令行加 `--ref`,客户端默认不勾选)。型号或系统版本不一致时使用安全模式,只处理脚本点名的开关,不做整页全关;这不等于完成新机型适配。 - **小米 msa**:经机主同意挂起时,仅在系统提供接口的情况下尝试禁止联网。Android 13 等旧系统可能只完成挂起,不能保证阻断广告;还原时不会关闭其他包共用的防火墙链。断网规则重启后可能失效,见[小米清单](docs/清单/小米-HyperOS.md)。 - **小米 10 / 荣耀 Magic7 Pro**:基于 #21 / #24 的路径与日志修复共用引擎和默认通知选择;没有新增未经真机验证的专用脚本。 - **华为原生鸿蒙**:#22 / #23 与此前反馈属于同一支持边界;连接首页明确当前仅支持 adb / Android,使用 HDC 的原生鸿蒙暂不支持。此版本没有鸿蒙引擎。 ### 验证结果 | 验证范围 | 2026-10-25 的结果 | |---|---| | Xiaomi 18 Pro Max(M154FF),HyperOS OS4.0.24,Android 17 | 前轮源码九段完整重跑约 173 秒,核对 28 项目标;日志无未找到或执行错误,重复运行调整 0 项。修复验证期间新增关闭天气、日历的「内容推广」各一项,未新增挂起包。本轮小米 10 兼容改动尚未在此机重跑 | | 通用设置搜索 | 真机成功输入中文并进入广告服务页;超时、输入失败、输入框与结果区分另有自动回归覆盖,未声称覆盖所有系统输入法 | | 设备无关回归 | 66 项测试通过:覆盖输入与开关保护、截图和横屏尺寸、渠道身份与实际状态、BOM、扫描失败、服务通知选择、快应用备份还原、msa 支持检测及部分失败、Windows 跨盘路径、桌面启动、发布资源范围。常亮原值 `15` 可正确恢复 | | 客户端清单 | 四品牌清单与目录说明均返回 HTTP 200;品牌别名及未知品牌的跳转映射校验通过 | | Mac Apple 芯片 0.2.1 | 包内源码逐文件核对通过;Developer ID 签名、公证、凭证装订、Gatekeeper 检查通过;内置命令行、原生 GUI、五张教程图片、JS API 通过 | | Mac Intel 0.2.1 | 修复签名权限后,最终 App 与 DMG 重新公证、装订,签名与 Gatekeeper 验证通过;Rosetta 下内置命令行、原生 GUI / 五张图片 / JS API 通过。Intel 真机待测 | | Windows 0.2.1 | [Actions #40190341584](https://github.com/rddmwmddr/android-ad-cleaner/actions/runs/40190341584) 通过:66 项回归、PyInstaller、内置命令行、原生 GUI / 图片 / JS API、安装程序及便携包生成。代码提交 `310a3f9`;后续 `73239d8` 仅调整 Mac 签名。下载后校验 ZIP 完整性,包内脚本与源码一致(忽略 Windows 换行差异) | | Android 15 模拟器 | 屏幕从 1344 × 2992 转为 2992 × 1344 后读屏尺寸正确刷新;独立应用营销渠道 `ON → off → ON` 通过,服务渠道和应用总开关不变;旋转与插电常亮原值已恢复 | 测试命令(已安装根目录 `requirements.txt` 的 Python 环境): ```bash python -m unittest discover -s tests -v ``` 真机结果仅代表上述机型和版本。vivo 整段脚本、小米 10、荣耀 Magic7 Pro、Windows 连接手机及报告者电脑、Intel Mac 真机仍待回归;不能用模拟器或 Rosetta 的结果代替。测试收尾恢复原来的屏幕旋转与插电常亮设置。 ### 仍待处理 - Windows #18 的启动修复已通过云端原生 GUI 验证;报告问题的 Windows 11 电脑仍需复测,请升级 0.2.1,0.2.0 不会自动获得修复。 - [PR #10](https://github.com/rddmwmddr/android-ad-cleaner/pull/10):社区提供的 vivo OriginOS 7 适配尚未合并;当前 OriginOS 6 参考脚本不代表 OriginOS 7 已验证。 - [PR #19](https://github.com/rddmwmddr/android-ad-cleaner/pull/19) / [PR #20](https://github.com/rddmwmddr/android-ad-cleaner/pull/20) 的问题已按当前引擎重新实现修复并补测试;没有整单合并,也没有引入整包关闭通知的命令。HyperOS / vivo / 荣耀对应手机的新版回归仍待完成。 - 所有已拉取 Issue 的处理范围、证据和待验证项见 [社区问题处理记录](docs/09-社区问题处理.md),其中原生鸿蒙、缺少诊断的新机型不会标成已适配。 历史安装包与版本说明见 [Releases](https://github.com/rddmwmddr/android-ad-cleaner/releases)。