Repository navigation
v0.3.0
·
85 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
ModAVDManager v0.3.0
ModAVD.exe:d34287cb16d4ace4b9dce4999afcd9d657aef11a6127b351ca421a07f7c654b4tools/modavd.exe:fb28ebe7881ba69fe9330b537ec2f9d65dc8c4d64f9dd64e313a5fe47fc52f12
随 ModAVD 0.37.0 进包(0.36.0 包里是 v0.1.0,所以从包里升级上来的,v0.2.0 的改动也一并带上,见 v0.2.0 的说明)。下面是相对 v0.2.0 的改动。
新增
- 随包的三个脚本搬进命令行:
components status|fetch:照「补全组件.bat」下载 adb 和 Android 系统镜像。先显示《Android 软件开发套件许可协议》,输入 y 才下载(--json时要给--accept-license);断点续传;核对大小、SHA-1 和 adb 三个文件钉住的 SHA-256 后再挪到位;不完整的旧目录改名保留,不删。collect-info:照「收集问题信息.bat」打问题包,只读,不起 adb server。report-config:照「复制配置信息」输出配置信息。- ModAVD 包里的
.bat这一版还是调原来的 PowerShell 脚本,改调这几个命令留到下一版(ModAVD/ModAVD#45)。
变更
- 新建实例时,命令行、MCP 和管理器一直显示「新建中 NN%」,直到后台那次开机、开机后的设置、宿主输入法、首次初始化、执行桥都做完、正常关机以后才算新建完成。百分比按实际做完的步骤算,只增不减,关机做完才到 100%。别的进程(例如 AUTO-MAS)发起的新建,管理器里也看得到进度。(ModAVDManager#31)
- 管理器卡片的「更多」里,新建中的「强制关机」换成「取消新建」:正常关机,实例停在「新建失败」,之后可以「重试初始化」。命令行的
stop照旧能中止新建。(ModAVDManager#31) create --resume碰到上次新建时没关掉的模拟器,先把客体数据写回磁盘再正常关机,然后重做,不用再先手动stop;关不掉才报错。(ModAVDManager#31)- 新建过程中每次开机做完,不再提示「实例 N 已就绪」,改成「这次开机后的设置做完了」。(ModAVDManager#31)
- 管理器界面上的「开机」一律带窗口,卡片「更多」里去掉了「带窗口开机」「重启」「显示窗口 / 隐藏窗口」。无窗口开机只走命令行和 MCP;显示 / 隐藏窗口以后改做老板键,命令行的
modavd window <编号> show|hide和 MCP 的set_window_visible照旧。(ModAVDManager#33) - 实例运行中不再切换有窗口 / 无窗口:
start新增--headless,和--window二选一,都不给时新开机是无窗口,和以前一样。实例已经在运行、或者正被另一次start开着时,要的方式和它现在不一样,就报busy(退出码 5),提示先关机再换,不接管也不重启;都不给就照它现在的方式接管,和以前一样。MCP 的start_instance同样处理。(ModAVDManager#33) - L3 缓存分大小两组的处理器(例如 7950X3D)上,多开时按各组还空着的核数比例给新实例选组,不再全都绑到大 L3 那组;只开一台时和以前一样绑大 L3。只有一组 L3、或者各组一样大的处理器不绑核,和以前一样。(ModAVD/ModAVD#34)
- 下载时的忙等循环数按宿主的余量设上限:不超过本实例的核数,也不超过逻辑核数减去所有模拟器占的核数。几台同时下载时不会把一组核心占满;逻辑核数不到本实例核数两倍的电脑上,只开一台时下载会比以前慢一些。(ModAVD/ModAVD#34)
- 拆出平台层,为以后支持别的平台做准备。Windows 上的行为和以前一样;macOS、Linux 上目前只能编译,所有操作都返回
unsupported,不写任何东西。 - arm64 客体(
abi.type/hw.cpu.arch是 arm64、arm64-v8a、aarch64)不装执行桥;bridge verify写明不需要,uninstall删掉残留的开机标记。
不兼容的改动
- 去掉
modavd restart命令和管理器界面上的「重启」按钮。旧的modavd restart、modavd help restart报用法错误(usage,退出码 2),提示改用modavd stop <编号>再modavd start <编号>。AUTO-MAS 里调restart的地方已经改成先关机再开机(AUTO-MAS-Project/AUTO-MAS#1794,在 dev 分支上)。(ModAVDManager#33) --json输出里的protocol(buildinfo.Protocol)从 1 升到 2。和 1 的差别:去掉了restart;start加了--headless;运行中的实例和要的开机方式对不上时报busy,不再接管;MCPstart_instance的window没有默认值了;加了window、creation_progress两个字段。信封和其余已有字段、错误码的含义不变。只认 1 的调用方要改成也认 2:AUTO-MAS 那边已经改成认 1 和 2(同上)。(ModAVDManager#33)
修复
- 已经装了执行桥的实例,开机时发现桥的文件和包里的不一样(更新过 ModAVD 包),就在开机后的设置做完后换上新文件,再冷启动一次。以前要手动跑
modavd bridge <编号> install。只在这次是 modavd / 管理器拉起的开机时做;AUTO-MAS 自己开机的实例不经过这一步。(ModAVDManager#30) - 实例正在关机时(例如刚点了模拟器窗口的 ×,或 AUTO-MAS 正在关它)再开机,先等它关完(最多 30 秒)再开机。以前会当成「已在运行」,返回成功后实例又自己退出。(ModAVDManager#29)
modavd bridge install/uninstall要冷启动开着的实例时,照它原来的方式开回来:带窗口的还带窗口,无窗口的还无窗口。以前一律按无窗口重开。(ModAVDManager#33)
给调用方(AUTO-MAS)
--json的protocol升到 2,差别见「不兼容的改动」;其余已有字段和错误码的含义不变。status/list/info新增字段window:带窗口运行时为 true,无窗口运行或没开机时为 false,可以用running && !window判断「无窗口运行中」。(ModAVDManager#33)- 开机方式和运行中的实例对不上时,
start报busy(退出码 5),不接管、不重启;调用方把提示原样给用户就行。(ModAVDManager#33) status/list/info新增字段creation_progress(0–100,只在creating时有值,否则是 0),AUTO-MAS 不用显示。status是creating时running/booted可能是 true,以status为准;create ... --json照旧一直等到新建完成、实例关机后才返回。(ModAVDManager#31)- 新错误码:
license_declined(退出码 2),components_unavailable、components_rejected(退出码 9)。 - 非 Windows 平台上一律返回
unsupported。
下载与核对
使用 Go 1.26.5、GOTOOLCHAIN=local,运行仓库中的 build.ps1 可以编出相同字节。单独下载包还包含 Go 许可原文和文件清单;请用附件 SHA256SUMS.txt 核对 zip 和解压出的两个 exe,例如在 PowerShell 里运行 Get-FileHash .\ModAVDManager-0.3.0-win-x64.zip -Algorithm SHA256。
单独下载的管理器不会自己更新,新版本要手动替换;ModAVD 包里的那份随 ModAVD 整包一起更新。单独使用时请给 --root 或设置 MODAVD_ROOT,否则会提示找不到 ModAVD 根目录。不要把单独下载的 zip 解压到 ModAVD 根目录覆盖整包中的文件。