Caputchin
应用市场游戏开发

修复一次应用市场发布失败

当发布或更新弹窗返回一个错误、或者你收到我们关于一次发布失败的一封邮件时,在下面找到你的错误码并照那个修复做。你一把修复推到你的仓库,就再点一次“发布或更新”以立即重新检查,或者等下一次每日索引器运行。

这里列出的每一个失败都是你能在你仓库里修好的东西。如果你没在这里看到你的错误,就到 完整发布错误参考 查那些较少见的码。

terms_accepted 未设置

当你的 caputchin.json 在顶层没有 "terms_accepted": true 时你看到这个。

  1. 打开你仓库的 caputchin.json
  2. 应用市场提交条款
  3. 在清单顶层加 "terms_accepted": true
  4. 提交并推送。
  5. 再点一次“发布或更新”,或等下一次每日索引运行。

这个值必须是字面量 JSON 布尔 true。字符串("true")、数字(1)、或省略这个字段都算未接受。

许可证不在批准清单上

license 缺失、畸形、或点名一个在我们 批准清单 之外的标识符时你看到这个。

  1. 从批准清单里挑一个真正涵盖你代码和捆绑资源的 SPDX 标识符。
  2. 打开 caputchin.json 并在顶层设置 license 字段,例如 "license": "MIT"
  3. 如果你的代码是双许可的,就用一个 SPDX OR 表达式(例如 "MIT OR Apache-2.0")。至少一个分支必须在批准清单上。
  4. 如果你的代码是 MIT 但捆绑了 Creative Commons 资源,就用 AND(例如 "MIT AND CC-BY-4.0")。每个分支都必须在批准清单上。
  5. 提交、推送、重试。

如果你的项目依赖一个不在我们批准清单上的许可证(最常见的是 GPL 家族、AGPL 或 LGPL),唯一的修复是重新许可或移除受影响的组件。我们无法按作者逐一给予例外。

我们找不到你的仓库

当我们的清单拉取返回一个 404 时你看到这个。

常见原因和修复:

  • 你的仓库是私有的。把它设为公开,或移除 caputchin-game topic 以不再出现在索引里。
  • 你的仓库缺 caputchin-game GitHub topic。经仓库页面上的 About 区加上它。
  • 你的仓库根部没有 caputchin.json(或者,对一个集合里的子游戏,leaf 目录处没有 caputchin.json)。
  • 你输入的仓库 URL 错了。用 owner/name 或完整的 https://github.com/owner/name URL。

把一个 caputchin.json 推到你的仓库,然后重试。

清单结构畸形

你看到一个 manifest-error,它的详情以一个字段名开头,比如 entrynpmgamesmarketplace.supportrun.modules[0].name

那个详情确切告诉你哪个字段错了:

  • entry: entry must be a clean relative path:你的 entry 值含有穿越(../)、绝对斜杠、查询字符串或空白。用一个干净的仓库相对路径,比如 dist/game.js
  • npm: npm package name is malformed:你的 npm 字段不是一个有效的 npm 坐标。用 name@scope/name,只用字母数字 + 连字符 + 点 + 下划线。
  • games[i] must be a relative path inside the repo:你集合 games 数组里的一个子路径逃出了仓库。用像 packages/leaf-memory 这样的路径,而不是 ../external/abs/path
  • run.entry must be a clean relative path:和 entry 同样的卫生规则,应用到可选的拆分 run 入口上。
  • run.modules[i].name:模块名必须匹配 [a-zA-Z0-9_-]+\.(wasm|js)$,且不能是 entry.jsartifact.js

按那条规则编辑被点名的字段,提交、推送、重试。

marketplace.author 有一个无效邮件

marketplace.author.email 存在但不匹配一个正常的邮件形状(一个 @、一个带点的域、无空白)时你看到这个。

  1. 打开 caputchin.json
  2. 找到 marketplace.author.email
  3. 要么把这个值修成一个真实的邮件地址(我们只把它用于发布失败通知),要么把这个字段整个移除。
  4. 提交、推送、重试。

如果你不想收到发布失败通知,你也可以把整个 marketplace.author 块移除。

你的 run 工件非确定性

当我们的一致性冒烟跑你游戏的 run(seed, trace) 函数、而它没产出一个合规的裁定时你看到这个。

重要:这不是一个致命的发布失败。你的游戏仍在应用市场浏览里被列出,且能被嵌入。它只是显示 不可回放,并且在那个确定性问题被修好之前无法给一个站点密钥设关卡。

常见原因:

  • 你的模拟读 Date.now()performance.now()Math.random() 或其他非确定性的全局量。
  • 你的模拟读我们在回放时不提供的外部状态(DOM、网络、存储)。
  • 你的模拟依赖在不同运行时之间有差异的浮点算术。

把模拟修成种子和轨迹的一个纯函数,推送、重试。那条确定性规则见 回放契约,并考虑那个可选的 引擎套件,它提供一个确定性的可播种 RNG 和时钟。

包拉取失败

当由 entry 和/或 npm 钉住的包 URL 拉取不了、返回一个非 2xx、或超过 12MB 时你看到这个。

  • 如果你刚推了一个新版本:CDN 可能还没传播。等一分钟再重试。
  • 如果你的包超过 12MB:精简资源、通过 run 声明拆分成模块,或把大资源移到一个不同的交付路径。
  • 如果你的 npm 包还没发布:先发布它;我们拉不到未发布的版本。

发布请求太多

当你在过去 60 秒里提交了超过十个请求时,你在手动发布弹窗上看到这个。

等 60 秒再重试。没有办法提高这个限制;它保护这个端点免受滥用。

停止通知邮件

如果你想停止收到发布失败邮件,见 提交条款第 10 节。那个收件地址是清单里你的 marketplace.author.email;移除或更改它就停掉这些邮件。

另见

本页内容