Skip to content

fix(avd): ModAVD 包自带 MAA 截图外壳时不再覆盖 - #1979

Merged
qiyinxi merged 1 commit into
AUTO-MAS-Project:devfrom
qiyinxi:fix/avd-shim-package-owned-20261113
Nov 13, 2026
Merged

qiyinxi merged 1 commit into
AUTO-MAS-Project:devfrom
qiyinxi:fix/avd-shim-package-owned-20261113

Conversation

@qiyinxi

@qiyinxi qiyinxi commented Nov 13, 2026

Copy link
Copy Markdown
Member

改了什么

ModAVD 0.40.1 起,整包自带 MAA 截图外壳 mumu-shim\shell\sdk\external_renderer_ipc.dll,列在根目录的 modavd-manifest.json 里。ensure_mumu_shim 以前每次运行都会把它换成本体 res/avdshim 里的那份,两份内容不同,ModAVD 用 Mirror 酱增量更新时,这个文件和新清单对不上,核对失败,只能改走 GitHub 下整包。

现在:

  • 根目录的清单列了外壳、文件也在:直接用包里的,不覆盖。
  • 清单列了但文件被删了:补上本体的那份,ModAVD 下次更新会换回包里的。
  • 更早的包(清单里没有,或者没有清单、清单读不了):照旧放本体的那份,内容不同就覆盖。

包里的外壳是 ModAVDExtras v0.1.3,比本体 res/avdshim 里的新,实例编号也可以直接填 ModAVD 的编号。

测试

  • 新增 tests/task/test_maa_avd_shim.py,覆盖上面几种情况,还有带 BOM 的清单和读不了的清单。和 tests/tools/test_avd_cli.py 一起跑,48 项全过。
  • 去掉「包里有就不动」的判断,或者把「清单列了外壳」改成「清单有文件就算」,都有用例失败。
  • ruff check、ruff format --check 通过。

ModAVD 0.40.1 起整包带 mumu-shim\shell\sdk\external_renderer_ipc.dll 并列在 modavd-manifest.json 里。换成本体的那份会和清单对不上,ModAVD 用 Mirror 酱增量更新时核对失败。清单列了外壳就用包里的;更早的包照旧放本体的那份。
@qiyinxi qiyinxi added 模块: 模拟器 按更新日志碎片自动设置 类型: 修复 按更新日志碎片自动设置 labels Nov 13, 2026
@github-actions github-actions Bot added 专项: MAA and removed 模块: 模拟器 按更新日志碎片自动设置 labels Nov 13, 2026

Copy link
Copy Markdown
Contributor

总体结论:修改后合并

宝宝,保留 ModAVD 包内的截图组件是对的,清单路径也与上游实际打包格式一致喵。不过新增的清单读取还差一处规范要求,别把“读坏了”当成“旧包没有”。

[规范 · P3] 清单损坏时不要继续覆盖组件

avd.py:90–99 把读取失败、非法 JSON、非映射根节点都返回为 False。静态追踪 MAA 启动的 _configure_maa_runtime → ensure_mumu_shim,只要现有清单损坏而 DLL 仍在,就会继续用本体 DLL 覆盖它,也不会提示清单错误。这里不是新增的覆盖回归,旧版也会覆盖;需要修改的是这次新增的守卫把损坏信息吞掉了,与当前上游文件读取规范要求的“损坏时明确报错”不符。

在这个读取入口区分两种情况就够啦:清单不存在或有效清单未列该 DLL,沿用旧包逻辑;清单存在但读不了、结构损坏,则保留现有 DLL 并报出带路径的错误。对应测试也改成断言“报错且 DLL 未改变”,不要把静默覆盖固定成预期。

dot酱未执行测试或真实模拟器加载。

—— 不让坏清单冒充旧包的 dot酱敬上 🐾

@qiyinxi
qiyinxi merged commit 86498c9 into AUTO-MAS-Project:dev Nov 13, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

专项: MAA 类型: 修复 按更新日志碎片自动设置

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants