Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 13:22
· 85 commits to main since this release
Immutable release. Only release title and notes can be modified.
34956f0

ModAVDManager v0.3.0

  • ModAVD.exe:d34287cb16d4ace4b9dce4999afcd9d657aef11a6127b351ca421a07f7c654b4
  • tools/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,不再接管;MCP start_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 根目录覆盖整包中的文件。