游戏中心:管理器下载安装包,装进实例

未关闭
#25 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
15/100
Issue 类型
功能
描述清晰度
需要澄清
活跃度
活跃
技术栈
go
领域
cli, desktop

调研方向

The two existing download paths are in internal/components and internal/update, and issue #23 plans to merge them, so read that plan first. The install step reuses the existing modavd install <i> <apk> command and the manager's Install APK action. Choosing the download library (Gopeed or the merged code) and the game-list format are open decisions, so settle them before writing code. Done means the first-step acceptance criteria in the issue hold: one download shared across instances, hash checks, resume after interruption, and Windows manual proxy support.

由索引模型根据 Issue 内容生成。

描述

要做什么

在管理器里加一个游戏中心:选一款游戏,管理器把安装包下载到宿主,再装进选中的实例。分两步:

  1. 下载和安装;
  2. 已装游戏的更新。

这条只管游戏中心自己的下载。游戏运行时自己发起的资源和增量更新下载,仍然在实例里由游戏自己下,另见 ModAVD/ModAVD#54。

已经定的(11-02 讨论)

  • 下载放在管理器,不放在实例里。
    • 多台实例共用宿主上的同一份安装包,不用每台各下一次。
    • 安装走现有的路径(modavd install <i> <apk>、管理器里的「安装 APK」)。装的时候实例本来就要开着,所以「下载在宿主、装要开机」不算额外的限制。
  • 下载工具不用 aria2。

还要定的

  1. 下载用哪份代码。
    • 讨论里倾向 Gopeed:核心是 Go 写的,可以作为库嵌进来;许可证 GPL-3.0,和本仓库的 AGPL-3.0 能合用。XDM 是 Kotlin 写的独立程序,嵌不进来。
    • 管理器里已经有两套下载代码(internal/components、internal/update),#23 要把它们收成一份,已经有断点续传、超时、重定向上限、代理。
    • 选之前比一下:多连接、断点续传、代理(照 #23 的规则)、依赖和包的体积。一个安装包一般几百 MB 到几 GB,单连接如果已经能跑满带宽,就用 #23 收好的那份。
  2. 实例里要不要放一个小程序接管理器的指令。
    • 放:游戏中心在实例里也有入口和下载进度,用起来更像普通手机。
    • 不放:只靠 adb,少一个要维护、要随镜像更新的东西。
    • 第一步用不到,先不放。
  3. 安装包从哪来、名单怎么维护。 讨论没涉及:每款游戏的下载地址、版本号、哈希放在哪,谁来更新。也有人希望能下海外游戏,名单要能放这类游戏。
  4. 更新怎么做(第二步)。 应用市场常见的「省流量更新」(增量包),可能是厂商专门提供给应用市场的,没有的话只能整包更新。做第二步前先查清楚。

验收(第一步)

  • 在管理器里选一款游戏:下载到宿主,核对大小和哈希,再装进一台或几台实例。
  • 同时装到几台实例时只下载一次。
  • 下载中途关掉管理器或断网,再开能续传,不从头下。
  • 只设了 Windows 手动代理的电脑也能下(规则同 #23)。
  • 实例没开机时,提示要先开机,或者帮用户开机。
主要语言
Go
星标
0
派生
1
平均合并
2 小时 42 分钟
30 天内合并 PR
13

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

ModAVD/ModAVDManager 的其他 Issue

查看 ModAVD/ModAVDManager 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。