You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CI 补充:同一提交的 GitHub Actions run 41979632748 已全部通过:windows-2025 的完整检查(原生 go test/go vet、交叉 vet、构建、隐私与作者检查)、macos-15 和 ubuntu-24.04 的原生 go test/go vet。以上是代码与文件配置验证,不扩展为模拟器启动、HVF 或游戏实测通过。
仓库原有 go test ./... 与原生 go build ./...、go vet ./... 通过。Windows/amd64、Linux/amd64 交叉 build/vet 通过;Darwin/arm64 CGO_ENABLED=0 build/vet 通过,该构建仍明确返回 unsupported,不伪造平台能力。交叉检查不替代目标系统原生运行验证。
每个独立分支原生 go build ./...、go test ./...、go vet ./... 通过。四阶段整合代码的 Darwin 无 cgo build/test/vet、Windows/amd64 和 Linux/amd64 交叉 build/vet 通过;Windows 测试还做过交叉编译。交叉检查不等于目标系统原生运行验证。
本地将四阶段合成 77d5d1cf86a2c49bc4eabf8a20b8098cf8a6be1d,合并无冲突;原生 go test ./...、go vet ./...、go build ./...、无cgo全量测试,以及Windows/amd64、Linux/amd64交叉vet/build全部通过。独立分支也执行了对应的原生/交叉检查;阶段5删除死分支后重跑emu/vkfix/guest相关既有测试和build/vet。本轮交叉检查不等同目标系统实机运行,Windows原有测试由上表CI执行。
两份许可分别是platform-tools/adb的android-sdk-license、API35 Google APIs ARM64镜像的android-sdk-arm-dbt-license。GUI的License接口固定顺序返回两份全文,Fetch复核同一组SHA256;即使仅缺adb或仅缺镜像,也不会因为todo变化而出现摘要错配。CLI仍只对实际待下载项逐份显示/确认,并共用输入缓冲。
合并保留主线 #89 的可选 Google Play 商店下载/导入、独立 ZIP 名称、文件校验、临时镜像清理与安装回退,以及 #90 的无头实例标记。Mac 保留 API35 ARM64 rev9、两份 Google 许可、执行权限、归档摘要和 SDK 占用保护;普通安装调用主线新抽出的 place 前仍检查取消、路径和 SDK 占用。Windows 专用商店组件在 Mac 的 Fetch 入口返回 unsupported,防止无 ARM64 清单时误入下载流程。
本轮验证结果:
范围
结果
macOS/arm64,Go 1.26.5,cgo 开启
go test -count=1 ./...、go vet ./...、go build ./... 全过
CGO_ENABLED=0
全量 go test -count=1 ./... 通过
Windows/amd64、Linux/amd64
各自交叉 go vet ./...、go build ./... 通过;不等于真实系统运行验收
主线现有界面测试
Play Store 20 项、创建取消 15 项通过
仓外 Mac 商店边界
交互和已接受许可的 JSON 请求均在联网/写目录前返回 unsupported;HTTP/Notice 为 0,临时包目录内容和权限不变;普通 Mac Fetch 仍可进入本地许可 fixture;商店导入的 Windows 门禁保持
这次通过的是官方 SDK 客体的真实生命周期、窗口和硬件渲染验收。自定义核心的完整组装、发行许可回执、HostIME、SHM、ARM64 Google Play 实例内装卸、游戏内验收、Developer ID 公证及线上更新仍未因此获得验收结论。ARM64 API 35 Vulkan 补丁继续保留保护门,未替换客体原库。
Activity
qiyinxi commentedon Nov 1, 2026
给做 macOS 平台层的人补几条,都是平台层拆出来以后剩下的(#67、ModAVD/ModAVDManager#12、ModAVD/ModAVDManager#19 之后核对的):
还有不少 Windows 调用不在平台层里,按
_windows.go/_other.go分开放在各自的包里。mac 要在这些包里各补一份:internal/adb:identity.go(CreateFile、GetFileInformationByHandle、进程令牌)、decode_windows.go(kernel32);internal/root/fs_windows.go;internal/report/host_windows.go(剪贴板、资源管理器、桌面路径,直接调 user32 / shell32,走的是report自己的 Host 接口,不经internal/win);internal/components/proxy_windows.go、internal/update/state_windows.go、internal/guest/move_windows.go、internal/emu/vkprobe_windows.go;GetConsoleWindow() uintptr、HideConsole这种 Windows 专名,mac 上要想好对应什么,或者改成不带平台的名字。行为都没问题,只是 mac 实现时要知道不止平台层一处。要不要先收进平台层,由做 mac 的人定。
补全组件和问题信息在非 Windows 上还没有实现(现在返回
unsupported):root.SDKComponents()在 darwin / linux 上没有下载地址:要补 platform-tools 的 darwin / linux 包,以及 Apple Silicon 用的 arm64-v8a 系统镜像(版本和哈希跟 Windows 那份一样写死);modavd collect-info、modavd report-config在 mac 上的实现(要收哪些日志、配置怎么取)。DeathofBrain commentedon Nov 5, 2026
提交第一批实现与本轮验证结果:ModAVDManager#62,基于当前 main
dc6501a,测试提交a070a41。本批修正 Darwin ARM64 的 QEMU 目录与 headless 文件名,并让系统镜像检测和新建 AVD 使用
arm64-v8a/arm64、Unix 镜像路径及path.rel。这是 #68 的路径与客体配置部分,进程/端口/Keychain、生命周期开放、组件下载、GUI、更新与发行继续分小 PR 推进。环境与结果(2026-11-05)
go test ./...通过,包含现有非 Windows 操作拦截测试:公开创建/启动等操作仍返回 unsupported,无文件副作用。path.rel,并实际解析到 fixture 文件;包内 SDK 和sdkRoot两种布局均通过。另验证真实目录布局下的 emulator/QEMU 组件检测及 headless 路径。这里的 fixture 是测试文件,不是 Android 启动实测。go vet ./...、交叉目标 Windows/amd64 与 Linux/amd64go vet ./...通过。交叉检查不代替 Windows 原生测试和 AUTO-MAS 字节对照;该部分以 PR CI 为准。官方目录核对
通过 Google 官方
repository2-3.xml对稳定 Emulator 37.2.13 的emulator-darwin_aarch64-16740729.zip读取 ZIP 中央目录,确认同时存在emulator/qemu/darwin-aarch64/qemu-system-aarch64和qemu-system-aarch64-headless。本轮未解压安装或启动模拟器。PR 仅提交核心实现和必要回归测试,详细结果放在本 issue;没有向任一主仓导入运行日志、截图、SDK、虚拟盘、历史验收报告或临时构建资源。
CI 补充:同一提交的 GitHub Actions run 41979632748 已全部通过:
windows-2025的完整检查(原生 go test/go vet、交叉 vet、构建、隐私与作者检查)、macos-15和ubuntu-24.04的原生 go test/go vet。以上是代码与文件配置验证,不扩展为模拟器启动、HVF 或游戏实测通过。DeathofBrain commentedon Nov 5, 2026
#62 更新:撤回测试改动,合并最新上游并保留 1080p 默认设置。
PR #62 当前提交
47e52c2,已合并上游 mainef9cffb。与 #61 的冲突已解决:新实例默认 1920×1080 / DPI 280,可选 1280×720 / DPI 240,已有实例按原档位和方向保留。此次 PR 相对 main 只修改internal/avd/avd.go、internal/root/components.go、internal/root/platform.go、internal/root/root.go四个生产文件;本 PR 新增的测试文件和测试函数已撤回,原有测试改动也已恢复。2026-11-05,Apple M4 / macOS 26.6.2(25G83)/ Go 1.26.5,本轮验证:
go build ./...与go vet ./...均通过。交叉构建与静态检查不等于目标系统原生运行测试。node --test scripts/test_display_tap.mjs的 4 项测试通过。TestCurrentPlatformMatchesHost的旧完整结构体预期没有新增的客体配置字段,Darwin 的 QEMU 路径预期仍是旧值;TestComponentsUseTable在 Darwin 仍断言 x86_64 镜像名,因而本机有这两项失败。此次按要求撤回测试修改,保留了原有断言,没有跳过或删除它们。此前a070a41的全绿 CI 只适用于初版提交。临时验证代码、日志和结果均在仓库外,ModAVD 主仓没有新增文件。
DeathofBrain commentedon Nov 5, 2026
第二批平台基础实现已提交 ModAVDManager#68,当前提交
1432755,已同步 main380a422,与 #62 独立,无合并冲突。本批在现有
internal/win边界补齐 Darwin 的进程快照、创建时间身份、argv/程序路径/CPU 时间、后台独立 session 启动、helper 脱离进程树启动、flock 和 TCP 端口归属。QEMU 的实例归属验证还没有实现,现有实例操作门禁继续保留;本批不代表 Android 模拟器已经能够启动。验证环境:2026-11-05,Apple M4,macOS 26.6.2(25G83),原生 darwin/arm64,Go 1.26.5。
go test ./...与原生go build ./...、go vet ./...通过。Windows/amd64、Linux/amd64 交叉 build/vet 通过;Darwin/arm64CGO_ENABLED=0build/vet 通过,该构建仍明确返回 unsupported,不伪造平台能力。交叉检查不替代目标系统原生运行验证。-Wall -Wextra -Werror编译,并确认系统表与 libproc 的 socket cookie / generation 精确匹配。PID=0记录,涉及 5 个端口;逐一确认 BusyPorts 仍判占用,ListenerPID 返回pid=0、ok=true、error 非空。没有连接这些端口、启动额外服务或提升权限。实现使用 macOS SDK 的公开 libproc / sysctl 结构,原生能力需要 cgo;端口占用与归属分开读取,归属权限不足不会误报空闲。Darwin 的信号 API 仅接收 PID,创建时间复核到发信号之间仍存在很窄的竞态窗口;进程树额外逐节点复核完整祖先身份和当前 PPID。没有伪造 orphan 的历史退出码。
PR 相对最新 main 仅包含 7 个生产文件。没有新增或修改测试、CI、分辨率逻辑,也没有提交验证代码、日志、结果、SDK 或模拟器文件。所有临时检查均在仓库外执行;ModAVD 主仓保持无改动。本轮没有启动 Android 模拟器、验证 HVF 或运行游戏。
现有 CI 已全绿:当前提交
1432755的 Actions run 42012045446 已完成,windows-2025的原生测试/静态检查、交叉检查、构建、隐私及作者检查全部通过;macos-15和ubuntu-24.04的原生测试/静态检查也通过。沿用原有 workflow,没有向 CI 增加步骤或测试。DeathofBrain commentedon Nov 5, 2026
平台目录拆分及验证补充:对应 ModAVDManager PR #68,本次提交为
fcefa74eaf1ab89128e005db0e90e3aa7920cc5f。macOS 原生实现已移入
internal/macos,Windows 原生实现保留在internal/win;共用平台入口与 unsupported fallback 放在internal/host:业务调用经
host分发,win与macos互不依赖。原生 Darwin 的go list -deps已确认host和主程序均无internal/win依赖。Windows 原生文件相对 main 无改动;类型别名保留原类型,Windows helper 设置仍写入唯一原有变量。macOS 的进程 reaper、退出状态缓存由后端唯一持有,helper 路径由入口配置后显式传入,不复制状态。经确认,仅将以下旧测试的导入和类型引用由
win同步为host:affinity_test.go、gates_other_test.go、qemu_errors_test.go。没有新增/删除测试函数,没有改变测试逻辑或断言。CI/workflow 无改动,仓库中没有加入验证脚本、运行结果、日志或 SDK。默认分辨率沿用上游 1080p;本批没有修改相关设置。验证环境:2026-11-05,Apple M4 / macOS 26.6.2(25G83)/ Go 1.26.5。下列检查均针对拆分后的代码执行:
go build ./...、go test ./...、go vet ./...CGO_ENABLED=0 go test ./...fcefa74,Windows checks、macOS portable、Linux portable 均为 success仓库外原生复验:
本批验证覆盖平台运行原语和包边界,尚未启动 Android 模拟器,交叉 build/vet 不替代 Windows/Linux 原生运行验证。macOS 实例归属与完整启停链路仍待后续批次;QEMU 扫描保留平台门禁。Darwin 的 PID 信号接口仍有身份检查到发送信号之间的时间窗口。
DeathofBrain commentedon Nov 5, 2026
阶段 3–6 已按职责拆成四个 Draft PR,继续基于阶段 1 #62 和阶段 2 #68,并按本 issue 和 #67 的平台边界实现。
四支均依赖尚未合并的 #62/#68;阶段 6 另依赖阶段 4 的磁盘查询。PR 描述提供本阶段独立提交入口,便于在前置 PR 合并前查看增量;基座合并后需要刷新分支使完整 diff 收敛。没有合并 PR。
本轮验证环境:Apple M4、macOS 26.6.2(25G83)、Darwin/arm64、Go 1.26.5。
go build ./...、go test ./...、go vet ./...通过。四阶段整合代码的 Darwin 无 cgo build/test/vet、Windows/amd64 和 Linux/amd64 交叉 build/vet 通过;Windows 测试还做过交叉编译。交叉检查不等于目标系统原生运行验证。emulator -accel-check,exit 0,返回Hypervisor.Framework OS X Version 26.6。Metal 仅证明宿主报告支持,不代表模拟器 Vulkan 或客体图形已验证。vendor.img仅读取:通过 GPT/ext4 提取 4,409,384 字节原库,在仓外验证PatchARM64的确定性、输入不变、独立输出和损坏/截断/已补丁输入拒绝,共 15 项通过。原库 SHA-256d6188011ed2ed58a1d69adfb04246abaa2595c0f15565a22da83f7751a3d6828→ 补丁库73ddfe0935826feef1f1a78d5a70af3ee7fa83584d2efaf5bad6ee91f36eb613。本轮只验证离线补丁结果,没有运行 Android、Vulkan 应用或游戏。.part的 SHA-256 校验、ABI/revision、SDK 使用中拒绝、旧目录保留、目标不覆盖以及链接/非普通文件拒绝。另只读核对 Google 官方 XML 的 URL、版本、大小、SHA-1 和许可标识;未下载大镜像、未自动接受真实许可、未修改现有 SDK。固定组件为 Darwin platform-tools 37.0.1 与 API34 Google APIs arm64-v8a revision14。业务代码经
internal/host调用,native 实现保留internal/macos,Windows 原生实现保持主线;Windows 和 macOS 后端互不依赖。Windows GPU 环境、x86 补丁/默认缓存/两参数脚本调用与 AUTO-MAS 原有对照保留。公开创建/启动/停止等平台门禁仍保留,阶段 7 尚未开启。默认分辨率沿用上游 1080p。按本会话授权仅同步旧测试引用、预期和适用平台范围,没有新增测试文件、函数、用例或 CI 步骤。所有 workflow 与同步的主线一致;所有临时 harness、日志、提取库与验证结果都在仓库外,ModAVD 主仓没有新增产物。
最终同步主线为
214b74a(含上游 logcat 分片、磁盘整理预算和既有测试修正)。以下是本次提交及原有 workflow 的状态;四个 PR 当前均无合并冲突、保持 Draft:26655ef9928904a3c2816b7f47ead38c733d71b55adf4c7dc968ee976c6fece4ae9c1de6bc57cee63cca735441ab8cb6b8653a4f157936948407639e6f92a127d4d5c5005e1e4c450a4700fd39b97980阶段 5 最后一次刷新仅更新提交元数据,tree 与已完成所有本地验证的
7336024完全相同。整合代码隐私扫描为 479 文件、0 失败,作者检查及各分支检查通过;格式和 diff 空白检查通过。ModAVD 与 Manager 主工作区均 clean,本次临时 worktree 已清理。前置 PR 状态同步:#62 当前
36197b7的 CI 42038245516 全绿。#68 当前e1ddfd2的 CI 42039248049 中 macOS/Linux portable、create-cancel 通过,Windows 在上游原有TestQemuImgLifetimeParentExit/nested_normal等待无关子进程时读到空 PID,strconv.Atoi失败。该测试和 WindowsRunBound实现与 main 的 blob 完全一致,host.RunBound仅作转发;fixture 的os.WriteFile发布与立即读取解析之间存在空文件窗口。失败发生在生命周期断言之前,未修改测试/CI;没有把该次 Windows run 记为通过。阶段 3–6 的 Windows checks 均已独立通过同一套既有测试。DeathofBrain commentedon Nov 6, 2026
2026-11-06 审查修复与验证补充。先确认状态:阶段1 Manager #62 和阶段2 Manager #68 目前都仍是Open,尚未合并;本轮按其审查意见更新。阶段3–5暂无直接PR审查评论,但一并处理了本仓库#112提出的Mac API35要求。阶段6的大小写别名占用保护问题已复现并修复。阶段3–6继续保持Draft,没有合并PR。
共同基准为Manager main
259d83f,包含#75/#77、上游ready测试竞态修正、端口计划修正及0.4.1内容。未混入尚未合并的#78;其新通用文件的host路由仍须在后续合入时处理。03bdb03e893d8e061e43df633a9850683f806bff71bb88cf5ec421189c61df10ea55e546c391ca4f24fd162aa5f4514d50ec7201a71a98c57b3f7e62b8769d42f42aef27c4d9a4e7cea3757e6f40969653ffbab9579a5d142fdff74abad964f63bc8e12f1f7835ff264020ddd02b998245315d65d679c760本机环境为Apple M4 / macOS26.6.2(25G83)/ Go1.26.5。六个独立分支的功能修复均完成原生
go test/build/vet ./...;四阶段整合代码也通过全量检查。最后同步仅抽取相同值的镜像名称常量,整合代码重新通过root/avd/emu/components检查与全量build。#62随后按两条inline意见统一使用MacOSSystemImageDir及Linux的SystemImageDir常量,取值不变,当前提交的原有CI也已全绿;上表分别对应每个PR当前HEAD,不引用之前head的绿灯。阶段1/2的Windows、Linux交叉build/vet与阶段2无cgo测试通过;真实Windows行为还由各最终CI运行既有测试验证。仓外专项验证:
arm64-v8a-35_r09.zip,1778933980B,SHA116f5bceca236b2737008977c4aaf826e46a8de7d。本轮重新核对官方XML、许可、远端文件信息及只读已安装镜像的属性/摘要;归档SHA256d2e7c6076e5df54d3677605a324daf9edf813b2808c216bdb1687f6b2b6aed99来自此前已下载并通过官方SHA1及ZIP CRC的回执,本轮未重新下载1.78GB归档。平台工具仍37.0.1,双许可分别取得同意的实现保留。/vendor/lib64/libvulkan_enc.so;现有HAL为/vendor/lib64/hw/vulkan.ranchu.so,1637944B,SHA256a0d60a87dd2bb827195dfaaa42b878c37c99d385bba326c5e06bf616cd43134d。删除旧API34 ARM64字节补丁和profile,ARM64在脚本推送/挂载/zygote重启前明确跳过并提示未验收。仓外5项验证确认x86 profile保持及三种bootSetup均提前返回;Win/Linux的启动argv与改动前对照相同(仓外模拟平台表,不冒充目标系统运行)。本轮官方API35启动 / GLES3.1 / 阴阳师验证(2026-11-06):
virtio-balloon-pci,free-page-reporting=on属性而退出。官方复测仅删除这一组-device参数,其他参数和完整多组-feature顺序保留;没有据此修改生产气球参数。最终PR71的buildLaunchArgs函数与本轮导出参数所用函数文本一致。日志确认GuestAngle enabled / guestVulkanOnly=true / MoltenVK / Apple M4,冷启动10.185秒,sys.boot_completed=1。4cf4992b330e447af177bf6ed192f47619296b951adda912042bac308f524a4b),exit0,用时0.243秒。请求ES3.0及3.1均得到实际ES3.1,两个上下文各32次完整像素读回,合计64次,差错和GL错误均0;ES3.2仍返回EGL_BAD_ATTRIBUTE。这是微型探针结果,不代表全部GLES功能或游戏性能。eecba6fd1f550263135c840b46a5e7fb3a8c324046fdfd3078454e95f92e7990。先清空logcat,再经系统解析的导出launcher启动;首次误启动非exported.Client被Android拒绝的harness错误保留,随后正常launcher启动成功。本轮18:32:37.230(UTC+8)的PID3916引擎日志显示CurrentVersion=310、OpenGL ES3.1、ANGLE / Vulkan1.3.0 / Apple M4;采集窗口18:31:34.611–18:36:40.674,已排除克隆旧日志。画面依次到达加载、开场视频、标题/服务器选择页,未点击“进入游戏”,未自动登录或接受条款。该窗口未发现旧NeoX设备创建失败、Fatal signal11、FATAL EXCEPTION或游戏ANR标记;不能据此声称本轮进庭院、战斗或长测通过。Windows的12个原生生产文件及3个相应测试文件与最新主线逐字一致;host的Windows入口保持类型别名/直接转发。阶段2的swap.go和GUI消息框还原host→win名称并gofmt后与上游全文一致;新的list/imagePath注入和错误details保留。两个后端互不依赖,未产生win→macos关系。
所有分支的.github、scripts、Makefile、go.mod、go.sum相对主线无差异。每支150个测试文件,没有新增或删除测试函数/文件;既有改动只涉及已授权的引用、预期和平台适用范围。gofmt、diff空白、隐私及作者检查通过,既有display与repo_checks脚本检查通过。所有harness、日志、镜像提取、APK和截图均保留仓外,ModAVD主仓未加入产物。
边界:公开Mac创建/启停门禁仍保持,阶段7未在本批开放;上述官方镜像验证不等于完整ModAVD发行包、Manager公开生命周期或所有游戏验收。API35的星铁/终末地Vulkan路径仍未验收,不能以阴阳师/GLES3.1结果替代。默认1080p、Windows API34及Windows原有补丁行为保持。
DeathofBrain commentedon Nov 6, 2026
2026-11-06,阶段3–6在阶段1/2合入后的同步与开发补充。
阶段1 Manager #62 已合入
6d8871a;阶段2 Manager #68 已合入3a5c971。本轮固定基准为 main3a5c971a94cd27c9be26a5c5b63d098e53033ba1,将阶段3–6分别同步到该主线,冲突已解决,四个PR均继续保持Draft。9265d83c8ebea436517cb0fe03dc28e382be0f79702f23b1bb60c944dc8e80a405642b395a5539cd50966f9e0eb8106b0de6f270adfd4afe53fbb1e97a315db49c7f622b21081a4ed98902cfdba81d26冲突处理与上游保留:主线 ModAVD/ModAVDManager#78的诊断/采集所有权、token和beforeStart检查,以及 ModAVD/ModAVDManager#86的创建取消均完整保留;旧splitLogcatClients/endProcesses/pidList生产实现不恢复。平台表取主线命名常量。阶段6还接入上游 ModAVD/ModAVDManager#84的License/LicenseSHA256/SourceOrigin/下载源设置迁移及镜像URL校验。17个不含本阶段功能改动的诊断、日志和取消文件与基准主线逐字一致;包含阶段改动的公共文件逐处保留上游行为。
本地将四阶段合成
77d5d1cf86a2c49bc4eabf8a20b8098cf8a6be1d,合并无冲突;原生go test ./...、go vet ./...、go build ./...、无cgo全量测试,以及Windows/amd64、Linux/amd64交叉vet/build全部通过。独立分支也执行了对应的原生/交叉检查;阶段5删除死分支后重跑emu/vkfix/guest相关既有测试和build/vet。本轮交叉检查不等同目标系统实机运行,Windows原有测试由上表CI执行。阶段3:新root / ADB / QEMU归属,仓外原生子进程验证
adbfixture,native ImagePath、原始启动环境、PID/Created和TCP监听归属都正确,但因新root不存在avd/仍返回port_conflict;仅mkdir目录后,同一PID/Created立即接受。基线17项断言包括复现该缺陷。阶段4:宿主与镜像预检
阶段5:退休ARM补丁通路清理
阶段6:Google双许可与组件保护
android-sdk-license、API35 Google APIs ARM64镜像的android-sdk-arm-dbt-license。GUI的License接口固定顺序返回两份全文,Fetch复核同一组SHA256;即使仅缺adb或仅缺镜像,也不会因为todo变化而出现摘要错配。CLI仍只对实际待下载项逐份显示/确认,并共用输入缓冲。提交边界:四个分支及组合代码相对main的
.github、scripts、Makefile、go.mod/go.sum、internal/win全部零差异。沿用主线现有CI,包括上游 ModAVD/ModAVDManager#80已有的shared-scripts检查,本轮没有增加步骤。175个既有测试文件无增删,测试与辅助函数无增删,仅保留已授权的引用、签名、平台预期同步;新增tracked文件全部为生产Go。gofmt、空白、privacy、author、既有display及repo_checks全部通过。所有harness、日志与报告保留仓外,ModAVD主仓未加入产物。CI重跑说明:阶段6首次Windows检查只有主线已有的TestCollectBootDiagTotal墙钟断言失败:总预算200ms,模拟调用Sleep150ms,该轮首项加调度/文件开销超过预算,正确停止下一项但未满足测试要求的两次调用。生产bootdiag.go及该测试均与main逐字一致;components包通过。另一个macOS job持续排队14分钟且未分配runner,GitHub不允许在整轮未结束时重跑失败job,因此取消排队后对同一HEAD重新发起现有CI。未改生产诊断逻辑、测试断言或workflow;第2次Windows checks(含原失败测试、交叉vet、build及后续检查)、Linux、shared-scripts、create-cancel均已通过,仅macOS job仍未分配runner;本机macOS完整原生及组合代码验证已通过。
公开Mac创建/启停门禁继续保留,阶段7未在本批开放;完成组件下载后的提示也已与此一致。Windows仍为API34、默认1080p。API35完整ModAVD构建/Manager生命周期、Mac IME真实通道,以及星铁/终末地专门Vulkan负载仍待验收。本轮未重启Android或重跑游戏,先前官方API35冷启/ES3.1/阴阳师标题页只保留为历史证据,不扩写为本轮实机结果。
DeathofBrain commentedon Nov 6, 2026
PR #72 同步主线后的冲突修复验证(2026-11-07)
验证提交:
ModAVD/ModAVDManager@ea308bff297ad145501886f377f4190019142259;同步 maindfcda90faddc3cfe96752a716490e586321da011。阶段 3 #69、4 #70、5 #71 已合入;阶段 6 PR #72 现已无冲突。合并保留主线 #89 的可选 Google Play 商店下载/导入、独立 ZIP 名称、文件校验、临时镜像清理与安装回退,以及 #90 的无头实例标记。Mac 保留 API35 ARM64 rev9、两份 Google 许可、执行权限、归档摘要和 SDK 占用保护;普通安装调用主线新抽出的
place前仍检查取消、路径和 SDK 占用。Windows 专用商店组件在 Mac 的 Fetch 入口返回 unsupported,防止无 ARM64 清单时误入下载流程。本轮验证结果:
go test -count=1 ./...、go vet ./...、go build ./...全过CGO_ENABLED=0go test -count=1 ./...通过go vet ./...、go build ./...通过;不等于真实系统运行验收Play Store 界面测试首次并行运行时有 1 项失败(商店任务忙碌时应禁用菜单,19/20);相关测试和界面源码与 main 逐字相同。仓外提取的 main 同项 20/20,通过同一代码重跑本 PR 也为 20/20。未修改该测试或界面代码,首次失败日志保留在仓外。
本轮使用临时目录、仓外 overlay、本地 HTTP fixture 和自有临时子进程,未下载真实组件归档、未替换真实 SDK、未启动 Android 或游戏。区分大小写 APFS 场景本轮未重新挂卷执行;之前结果仍只算历史证据。默认 1080p、Windows/Linux API34 和 macOS 公开创建/启动的阶段 7 门禁保持。
本提交沿用原有 CI,发布此记录时仍在排队/执行;不将本机交叉检查当作该 CI 已通过。测试源码、脚本、日志和结果均未加入仓库。
DeathofBrain commentedon Nov 6, 2026
macOS Google Play 组件下载/导入验证
实现 PR:https://github.com/ModAVD/ModAVDManager/pull/92(依赖阶段 6 的 ModAVD/ModAVDManager#72)。本轮提交:
447c9567054381956b0313a3b769d713cb5068b2。按本轮确认的范围,仅准备 Apple Silicon macOS 的组件文件。实例内安装/移除待生命周期接入,本轮没有启动模拟器,也没有验证 Google APIs 客体与 Play 组件的安装兼容性。
官方来源核验
system-images;android-35;google_apis_playstore;arm64-v8a,revision 9。1789211399字节。b01416bc0bca12a85295dad179f9b8a1cae3d1e6;SHA256:97cbd9b347a92ce6cfeb9817504cca162d9a0f230ee38cd216e21920ae91fea8。实际下载文件均匹配,ZIP CRC 通过;arm64-v8a/system.img为2203058176字节。0682da42e0ca119ce29503c265587f8ae17277094f9262b54c1d2bb99557c6f5。下载保留既有许可确认流程。实际提取与独立对照
目标 product/system_ext 使用 EROFS,四 APK 需要 compact 索引、big pcluster 和 LZ4 支持。新只读提取器对下列五文件的大小及 SHA256 全部通过,并与独立 erofs-utils 1.9.4 提取结果逐字节一致;合计
322137034字节。27ec8f3dbb69caa2176b6faa4fc6f59ceb1a134ccdea0933b58908ac28c3ff715e093367651d0db1478e58a5cac463cbaf684edbe6ffc42743ce1390e545dee43d17213740c99cfa7961bb3d9509d6783914b2b7f634e366c4e73f5a0ad293ebd9d0c6af51017eccff01a18c9593db14edba40f49f3bfd9764b79ad70a8496db37aabd485044e3af6d84755268faf8392e226ca0d188be6a80335525ce0ec6ff仓外集成验证
ImportPlayStore导入成功;发布目录只含五文件和 source.properties,ready=true、source=import、install_supported=false。导入后原归档的大小及 SHA256 保持一致。现有检查
go test ./...、go vet ./...、go build ./...通过;CGO_ENABLED=0 go test ./...通过。node --experimental-vm-modules --test scripts/test_playstore_ui.mjs)。Windows 保持 API34 x86_64 r14,默认 1080p 保持。本轮提交没有测试文件/函数、CI/workflow、scripts、构建配置或依赖改动;主仓库不包含上述归档、SDK、harness、日志或测试产物。PR 暂含 #72 的依赖改动,已有测试预期同步也来自 #72。
原有 CI:当前提交的原有 CI:五个作业全部通过(Windows checks、macOS、Ubuntu、shared-scripts、create-cancel),对应 HEAD
447c9567054381956b0313a3b769d713cb5068b2。未修改工作流。DeathofBrain commentedon Nov 6, 2026
macOS 阶段 7–12 的核心实现已分别提交 Draft,未合并。验证结果集中记录在此;harness、Go overlay、测试日志、SDK 克隆、签名 fixture 和二进制均留在仓外。
09bd4a974df79f2bab16acb84ac5abf736861599bf2174939b12059e3d62eb1befd69f8fd522e6668c120e1553cfd9e342a9ae284789fd99190216de33afbf6d3d661d2648b28ac70d4ba9630f2a309517ea66d48619c1c673b42834324857d2d8243db8f36fce8d57de7f7d86911adc273ef4b28e74a2ae以上相对 main 的 diff 暂含未合入的前置实现。阶段 8 的独立提交是
873c37d、bf21749;阶段 7 是16190f1、09bd4a9。阶段 13 的完整打包与机器验收、阶段 14 的发布工作流尚未进行。环境为 Apple M4 / macOS 26.6.2 (25G83) / Go 1.26.5。各阶段已有测试与检查通过;另外在仓外临时分支整合六项实现,并合入最新
main@e5a638eebd74742721147f5af2dff32511da9d79(主线 #91 的 GSF ID 与安装失败撤回),无文本冲突。该整合状态的检查为:go test ./...、go vet ./...、go build ./...通过node --experimental-vm-modules --test运行现有磁盘、整理、Play Store、点击映射、创建取消脚本,51/51 通过,包含新主线 GSF ID/partial 状态internal/win本批没有新增 tracked 测试文件、函数或辅助程序。原有不支持平台测试仅机械调整 native 适用范围:两处 build tag、三处 native skip;原测试函数与断言保留。最新 main 自带的测试和脚本改动仅在临时整合验证中使用,不作为本批新增测试提交。
各阶段的仓外验证与实际边界:
-race通过。真实 qemu-img + 隔离 64 MiB backing/delta fixture 在 APFS 的分配量从 33,947,648 → 393,216 字节,释放 32 MiB;qemu check/compare、客体内容和 backing 字节一致。低收益跳过、占用锁、链接、取消整个子进程组、活动日志 vnode、身份变化、非平面内容与隔离恢复均验证。代理使用仓外实际编译的 Linux ARM64/x86 ELF,覆盖 ABI、坏 gzip、错误架构和缺失 ARM payload;后者启用时返回 not_ready,元数据不变,关闭仍可用。macOS HTTP/HTTPS/SOCKS、PAC 提示、例外、CIDR、scoped 字典和真实只读 scutil 通过;确定性并发交错及 12 项简单主机名/IPv4/IPv6 矩阵以-race通过。移除锁内最终状态检查后同一仓外用例按预期失败,确认覆盖该回归。--no-window --dev验证私有 cookie API、符号链接别名复用同一服务、状态文件 0600 和 SIGTERM 清理。AppleScript 只编译验证,未实际弹窗/打开浏览器;没有签名 .app 打包验收。tools/modavd,退出成功,新可执行文件能够运行。17 个交换边界分别验证有效候选继续完成、损坏候选回退,合计 34 个中断场景;metadata 最终写入后的回退、重复恢复、成功后重复 recover 均验证幂等,并保留无关配置修改。签名内容篡改、脚本替代必需 Mach-O、x86-only、同大小同 mtime 的暂存篡改、非法链接图、严格 ZIP/JSON、实际占用进程/启动锁、取消及缺失远端资产均通过。独立重跑两项审阅回归:原件及备份都缺失时必须保留现场;重定向 backup/sdk 父目录时不得写外部目录。上述各 HEAD 沿用仓库原有 CI,报告发出时状态如下;本批没有增加、修改或禁用任何 CI 步骤。这里记录的是各 head 的既有 run,不将本机对新 main 的临时整合检查称为 GitHub 已重跑。
六个分支分别与最新 main 进行本地 merge-tree 检查,全部无冲突;GitHub 也均返回 Draft/MERGEABLE,但部分早先 PR 的 base 缓存尚未更新,因此这里不据此声称新 main 的 CI 状态。
当前限制明确保留:Windows API34、主线默认 1080p 和原有 Windows 实现保持;ARM64 执行桥、运行中窗口显隐、实例内 Google Play 装卸仍有独立门禁。阶段 8 不宣称完成原生 HostIME/SHM 截图通道或诊断开关的写操作;ARM64 客体代理的正式嵌入留到打包阶段。APK/IME、客体代理、FITRIM、截图、真实 Android/游戏,以及正式分发包的端到端验收本轮未完成。
阶段 11 的
modavd-macos-update-v1/macos-arm64协议需要后续打包器配合,目前没有兼容的正式远端资产;签名检查验证完整性,包含 ad hoc,不证明可信发布者或公证,SHA256 须从独立可信渠道取得。macOS 进程扫描和 flock 为协作式排他;中断点是重建的 journal/rename 状态,不是断电实验。上述限制均写入相关 Draft PR,不把 fixture 通过等同于完整机器验收。DeathofBrain commentedon Nov 7, 2026
PR #92 冲突修复验证(2026-11-07)
Manager #92 已同步最新
main@539cf3b75f5d716b3b092e29f6db889a8aab2a68,修复提交为ab43103b07fa299b3d5f85b1057b495f2b15d26a。GitHub 已返回 MERGEABLE,PR 保持 Draft,未合并。主线现已包含 #72、#91 与 v0.5.0。三处冲突分别是 macOS CLI 帮助、Fetch 的临时 Windows-only Play 组件门禁、原生路径检查的组件列表;保留 #92 的 API35 ARM64 r9 下载/导入及对应 staging 路径检查,同时完整保留主线 GSF ID、partial 状态与安装失败撤回的 CLI/API/UI/客体逻辑。未引入阶段 7–12,macOS 实例内 Google Play 装卸仍明确拒绝。
本轮结果(Apple M4 / macOS 26.6.2 / Go 1.26.5):
97cbd9b347a92ce6cfeb9817504cca162d9a0f230ee38cd216e21920ae91fea8。仓外 overlay 仅省略无关 SDK 组件清单,Play profile、下载与提取实现不替换原有 CI 已由本次 push 触发:run 42342382674,对应上述新 HEAD;发布此记录时仍执行中,不把旧 head 的成功当作本轮成功。未改变 CI。
本轮使用仓外隔离目录、已有官方归档和自有临时进程,不修改真实 SDK/AVD,不启动 Android;未重新做客体内安装兼容性验收。没有向主仓库加入测试、harness、日志、归档或结果文件。
DeathofBrain commentedon Nov 7, 2026
按要求分阶段提交了两个 Draft PR:阶段 13 的构建/完整包装配在 #149(
7d10af4),阶段 14 的更新归档/显式签名发布流程在 #150(8432564,依赖 #149)。阶段 14 自身改动为三个生产文件;未创建 tag 或发布 release。没有改 CI,没有提交测试函数、夹具、日志、二进制或 SDK。这里只报告本轮实际结果,不将历史客体验收算作当前实现重跑。ModAVDManager 阶段 7–12 已分别同步到 main
b0b7c02,#92 已合入主线。六个 Draft PR 目前均无冲突、各自当前提交的既有 CI 6/6 成功;两个新 PR 的既有检查均 2/2 成功。工作流变更仅来自主线自身,本轮相对主线没有工作流改动。bf26706d7fbc5b2dab47c7facb84a2c6757c3ef9ea9d773286498fd4be3df9f59eb1a4a5b5f77a5a9dadff0f2b1ce4595947d0139790392441316735bd5103a49b5c5cb43ba9f5f1436164134fc00f1f0d03632b7b62f262431b1333b9a0f85539cc8b5d00e475349a47eb7fd79875c00f45a48556af347a整合验证源码为 DeathofBrain/ModAVDManager 的 codex/macos-13-14-integration 分支,提交
4e15c96cc69f06edbffb0ada509b6b140a44a5f9。该分支仅方便复现各阶段组合,没有合并 PR。Go 固定go1.26.5。本机为 Apple M4 / 16 GiB / macOS 26.6.2。test/vet/build;Windows/Linux 交叉vet/build全通过。矩阵在749d7b9执行,最终提交仅补一个 gofmt 空行,最终二进制由4e15c96构建并运行。assemble()已接受真实 SDK 输入。2025-11-25/16 工具/3 只读调用、真实 HTTP 鉴权/Host-Origin 拒绝/HttpOnly/SSE/二次启动复用/0600 状态/退出清理通过;报告及问题 ZIP 生成通过。未读取用户 CDK/Keychain、操作剪贴板或打开浏览器。--root、不改 HOME,App 与 tools CLI 正确发现外层 sdk 根目录;签名有效、最终源产物摘要不变,进程和临时状态已清理。此项不是 Finder/浏览器视觉验收。release.py生成 20,096,753 字节 / 24 项 ZIP,SHA256e037cb1792a55a184cfad308da6827cb143b16b1aefd134bf580b4118ebb282e。集成 CLI prepare → install(updated:true)→ recover/重复恢复通过;21 项负例及真实中断重命名后的 complete/rollback 通过。逐文件签名/mode/hash/xattr/link 一致,SDK/AVD/日志/设置哨兵保留且未进入 ZIP。0.38.2仅为验证输入。不是 Android/QEMU 客体,不包含 Google SDK,不伪造许可接受,fullAssemblerAccepted=false。4 GiB 边界做限制逻辑检查,未生成多 GiB 归档。目前不能写成“完整实机回归全部通过”。只有未修改的官方 Emulator 37.2.13、adb 37.0.1 和 API 35 ARM64 r9 可用,自编核心已清理;也没有可复用的明确 SDK 许可接受收据,不能编造收据来通过完整装配。官方验证包不允许伪装为自编核心更新。
最新按要求把验收实例设为 3 GB,保留主线 1080p 默认值。在独立 SDK APFS 副本上,HVF、Metal、组件、API/架构、端口和磁盘检查均通过;启动仍需约 4.5 GB 可用内存,本轮可用内存波动约 2.8–4.1 GB,最后检查为 2.8 GB,公共 create 返回
precheck_failed、create_failed、qemu_running:false。本轮没有绕过预检,没有启动 Android 或游戏。此前已验证失败实例删除后列表为空;最新 3G 请求保留在隔离目录供继续恢复。因此仍待真实条件满足后验收:完整 SDK 包装配、自编核心/HVF 客体启动、窗口/无头切换、客体内日常操作及游戏、真实发行签名/公证与线上更新。原生 HostIME、Windows SHM 截图和 ARM64 实例内 Google Play 装卸仍保持现有能力门控,本次打包流程没有把它们误标为可用。
DeathofBrain commentedon Nov 7, 2026
补充后台实例排查:系统进程及命令行未发现 QEMU/emulator、netsimd 或其他 Android 虚拟机;现有 5037 ADB 服务返回
host:devices-l = OKAY、设备列表为空。发现一个闲置hd-adb(PID 30174,RSS 336 KB),已通过host:kill正常停止,确认进程退出;没有删除 SDK、实例磁盘或用户数据。清理后重新执行 3G 实例公共预检,其他项目通过,可用内存约 4.4 GB,仍略低于所需 4.5 GB,
ready:false。没有绕过预检或启动客体。DeathofBrain commentedon Nov 7, 2026
补充本轮 3 GiB 真机重试结果(2026-11-07):本次已成功初始化并打开 Android 实例窗口,实例保留运行。
此前检查因可用内存不足而拒绝启动;本次重试时预检检测到可用内存约 5.8 GB,满足 3 GiB 实例约 4.5 GB 的启动预算后正常放行,没有绕过内存或磁盘保护。清理掉的闲置 ADB 进程仅占约 336 KB,不能将本次成功归因于它释放了数 GB 内存。
sys.boot_completed=1;ABI=arm64-v8a;SDK=35;wm size=1920x1080software_renderer=false启动验收二进制来自 Manager 集成提交
4e15c96cc69f06edbffb0ada509b6b140a44a5f9。本轮的配置、日志、截图和验证工具均留在仓外,没有新增测试文件、CI 步骤或二进制到 PR。本次启动还暴露了后台日志采集的兼容问题:共享代码仍拼接
tools/modavd.exe;此外,本轮验收根尚未放入正式布局的tools/modavd。现已在 阶段 8 PR #97 提交修复f88a16678a8b44122d38b4207c3b5797a4fc86e8:按平台选择 CLI 名称,macOS 通过文件身份识别/var与/private/var等路径别名,保留 helper、根目录、ADB 子进程和客体身份核验;崩溃转储归档仍限定 Windows。修复后的 Manager 集成提交为
b6e8dc909a566ebd62a837a3278935684b85cc46。重新构建含 ARM64/x86 双 ABI payload、独立签名校验通过的 CLI,并仅补齐仓外验收根的tools/modavd后,通过正常start路径接管现有实例:launched=false、zygote_restarted=false,QEMU PID 前后均为 70856,窗口持续在线。真实 logcat helper 和 ADB 子进程已启动,已写入约 6.3 MB 日志,日志路径警告消失。现有 root/emu/cli 测试和 vet、Windows amd64 交叉构建与相关 vet、仓外原始/var路径的 helper 归属链-race验证均通过;没有改 CI 或新增仓内测试。这次通过的是官方 SDK 客体的真实生命周期、窗口和硬件渲染验收。自定义核心的完整组装、发行许可回执、HostIME、SHM、ARM64 Google Play 实例内装卸、游戏内验收、Developer ID 公证及线上更新仍未因此获得验收结论。ARM64 API 35 Vulkan 补丁继续保留保护门,未替换客体原库。
DeathofBrain commentedon Nov 8, 2026
补充实例内存检查修复与回归结果(2026-11-08):Manager Draft PR #93,实现提交
4580115、ddb46e7;本地集成并打包验证的 Manager 提交为5fb576035fe3170deec3930387a76eb508a09e0b。触发场景:实例已保存为 3072 MB,卡片显示 3 GB,但电脑检查仍显示“实例内存 6 GB,启动约需 7.5 GB”。原因是
/api/check固定使用默认内存,且检查缓存和前端结果没有关联实例配置。修复后可选择检查实例或新建默认配置;保存内存后自动重查,旧请求不会覆盖新目标。后端按实际检查内存复用缓存,响应携带实例与内存信息。内存不足只属于当前配置,共享宿主/组件故障仍阻止全部实例启动;实际开机继续执行实时内存预检。另修复排队的手动刷新误用普通检查结果的问题,确保强制刷新到达底层硬件探测,同时保留并发强刷去重。
验证环境:Apple M4、macOS 26.6.2、Go 1.26.5。
go test ./internal/ui ./internal/emu、同包go vet、Windows amd64 交叉构建及 vet 通过。.app,双 ABI guest payload 嵌入与签名完整性检查通过。测试在打包前独立执行,打包器未重复运行测试,构建回执如实记录。memory_mb=6144, instance_index=null;指定实例 0 返回memory_mb=3072, instance_index=0, root_ready=true。当时可用内存约 4.1–4.3 GB,因此检查仍正确提示内存不足。本次未修改实例配置、未启动客体、未绕过启动预检。本次只提交 8 个生产/接口文档文件。CI/workflow 未改动,未加入测试代码、脚本、日志、截图、SDK 或二进制;验证材料均留在仓外。PR 保持 Draft,目前无合并冲突,既有 CI 6/6 通过。