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

オープン
#25 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
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分
マージ済み PR(30日)
13

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

ModAVD/ModAVDManager のほかの issue

ModAVD/ModAVDManager の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。