APK 和轨道

借助 Google Play Developer API,您可以为应用上传新的 APK,并将这些 APK 发布到不同的发布轨道。这样,您就可以部署应用的 Alpha 版和 Beta 版,并向获批用户提供相应版本。此外,您还可以部署分阶段发布版本,该版本会自动提供给应用的一小部分用户。随后,您可以逐步增加可获取该应用版本的用户人数,直至您最终将该版本部署为“正式”版本。

添加和修改 APK

  1. 通过调用 Edits.apks: upload 方法上传一个或多个 APK。

    该方法会将 APK 上传到一个“存储桶”中,系统可在这里将相应 APK 分配给某个“轨道”,以便将其部署至用户(如果删除或舍弃编辑会话,上传到相应编辑会话的所有 APK 也会丢失)。

  2. 通过调用 Edits.tracks: update 方法在“轨道”上发布 APK。您可以在以下轨道上发布 APK:

    • 测试轨道,例如 "alpha""beta"

      Alpha 版和 Beta 版应用会部署至您分配到 Alpha 版和 Beta 版测试组的用户。您可以使用 Google Play 管理中心将用户分配到这些测试组。

    • 内部测试轨道:"qa"

      您的应用的内部版本会部署到 Google Play 管理中心中配置的内部测试轨道。

    • 正式版轨道:"production"

      在正式版轨道上发布的版本会部署至所有用户。您可以在正式版轨道上使用分阶段发布模式,先将相应版本安全地部署至一小部分正式版用户,然后随着您对该版本的信心日渐增强,再逐渐部署至更多用户。

    如果您使用的是简单模式,则不应在任何轨道上放置多个 APK。如果您使用的是具有多 APK 支持功能的高级模式,则可以向每个轨道上传 0 个、1 个或更多个 APK。

设备规格轨道的轨道名称

设备规格轨道的轨道名称以特定标识符为前缀。

设备规格 前缀
Android Automotive OS automotive
Wear OS wear
Android TV tv

如何推算某个设备规格轨道的轨道名称?

正式版轨道、开放式测试轨道和内部测试轨道等常用轨道都有众所周知的名称。

轨道类型 默认轨道名称
正式版 production
开放式测试 beta
内部测试 qa

某个设备规格轨道的轨道名称可按如下格式推算:"[prefix]:defaultTrackName"。例如,对于设备规格为 Wear OS 的轨道,轨道名称有:"wear:production""wear:beta""wear:qa"

封闭式测试轨道需要手动创建,并采用自定义名称。因此,如果设备规格的名称为 $name,则其对应封闭式测试轨道的名称将为 "[prefix]:$name"

APK 工作流程示例

本部分介绍了 Tracks API 的典型用法。在这里,我们假定您想要为每个轨道上传新的 APK 版本,并分配一定数量的用户来接收某个分阶段发布版本(现实中,开发者不太可能在同一次操作中执行所有这些动作,而是可能会在某一天更新 Beta 版,然后在另一天在正式版轨道上创建分阶段发布版本,诸如此类)。

  1. 打开新的编辑会话,具体如 Edits 工作流程中所述。
  2. 针对要上传的每个 APK 调用 Edits.apks: upload 方法。在该方法的请求正文中传递 APK(此操作会将 APK 置于某个存储区域中,但不会在某个轨道上将其发布,也不会对其进行部署)。该方法会针对您上传的每个 APK 分别返回一个版本代码;当您在某个轨道上发布相应 APK 时,您将需要使用该版本代码来引用此 APK。
  3. 针对要用于发布 APK 的每个轨道调用 Edits.tracks: update 方法。在请求正文中,传递包含您想发布的版本的 Edits.tracks 资源。例如,如需发布一个版本代码为 88 的 APK,请使用以下代码:

    {
    "releases": [{
      "versionCodes": ["88"],
      "status": "completed"
    }]
    }
    

    此时,用户仍无法获取 APK。与其他编辑会话一样,在您提交之前,相应更改不会发布。

  4. 调用 Edits: commit 方法来提交更改。在您执行此操作后,系统会为每个轨道上的用户提供更新后的 APK 版本(与所有编辑会话一样,相应更改可能需要几个小时才能生效)。

分阶段发布

如果您想逐步部署新版本的 APK,您可以选择以“分阶段发布”版本的形式进行发布。这样,Google Play 便会自动将其部署至所需比例(由您指定)的应用用户。如果“分阶段发布”的 APK 没有任何问题(如崩溃等),您可以提高接收该版本的用户比例;准备就绪后,您可以将该 APK 部署为新的正式版本。

本部分介绍了先分阶段发布 APK,再将其提升为正式版所需执行的步骤:

  1. 创建编辑会话,具体如 Edits 工作流程中所述。

  2. 使用 Edits.apks: upload 方法将新 APK 上传到编辑会话。

  3. 使用 Edits.tracks: update 方法在正式版轨道上启动 "inProgress" 分阶段发布版本。选择应接收新 APK 的用户比例。此时,最终用户仍无法获取相应 APK。

    {
    "releases": [{
      "versionCodes": ["99"],
      "userFraction": 0.05,
      "status": "inProgress"
    }]
    }
    

  4. 通过调用 Edits: commit 方法提交进行中的编辑会话中的更改。在接下来的几个小时内,系统将向用户发布新 APK。所选比例的用户将会收到新 APK。

您之后可能希望提高可接收相应 APK 版本的用户比例,或暂停发布该版本,具体取决于该分阶段发布版本是否获得成功。

提高可接收分阶段发布版本的用户比例

假定您正在进行分阶段发布,且可接收相应版本的用户比例为 5%(如上一部分中所述),本部分将介绍在相应版本获得成功的情况下如何提高这一比例:

  1. 创建编辑会话,具体如 Edits 工作流程中所述。

  2. 使用 Edits.tracks: update 方法更改正式版轨道上的 "inProgress" 分阶段发布版本。提高应接收新 APK 的用户比例:

    {
    "releases": [{
      "versionCodes": ["99"],
      "userFraction": 0.1,
      "status": "inProgress"
    }]
    }
    

  3. 通过调用 Edits: commit 方法提交进行中的编辑会话中的更改。在接下来的几个小时内,系统将向用户发布新 APK。所选比例的用户将会收到新 APK。

暂停分阶段发布

假定您正在进行分阶段发布,且可接收相应版本的用户比例为 5%(如上一部分中所述),本部分将介绍在发现相应版本存在问题时如何暂停分阶段发布。

  1. 创建编辑会话,具体如 Edits 工作流程中所述。

  2. 使用 Edits.tracks: update 方法更改正式版轨道上的 "inProgress" 分阶段发布版本。将状态设为 "halted"

    {
    "releases": [{
      "versionCodes": ["99"],
      "status": "halted"
    }]
    }
    

  3. 通过调用 Edits: commit 方法提交进行中的编辑会话中的更改。新用户将无法再获取此版本。

如果您以后决定恢复已暂停的版本,只需将其状态重新设为 "inProgress" 即可。

完成分阶段发布

如果您对分阶段发布的版本感到满意,并想要向所有用户发布相应版本,可以将该版本的状态设为 "completed"

  1. 创建编辑会话,具体如 Edits 工作流程中所述。

  2. 使用 Edits.tracks: update 方法更改正式版轨道上的 "inProgress" 分阶段发布版本。将状态设为 "completed"

    {
    "releases": [{
      "versionCodes": ["99"],
      "status": "completed"
    }]
    }
    

  3. 通过调用 Edits: commit 方法提交进行中的编辑会话中的更改。在接下来的几个小时内,系统将向用户发布新 APK。所选比例的用户将会收到新 APK。

草稿版本

借助草稿版本,您可以自动上传 APK,并通过 API 创建版本。之后,您可以通过 Google Play 管理中心部署相应版本。如需在某个轨道上创建草稿版本,请执行以下操作:

  1. 打开新的编辑会话,具体如 Edits 工作流程中所述。
  2. 针对要上传的每个 APK 调用 Edits.apks: upload 方法。在该方法的请求正文中传递 APK。该方法会针对您上传的每个 APK 分别返回一个版本代码;当您将 APK 分配到某个版本时,您将需要使用该版本代码来引用相应的 APK。
  3. 针对要用于发布 APK 的每个轨道调用 Edits.tracks: update 方法。在请求正文中,传递包含您想创建的草稿版本的 Edits.tracks 资源。例如:

    {
    "releases": [{
      "name": "My draft release",
      "versionCodes": ["88"],
      "status": "draft"
    }]
    }
    

  4. 调用 Edits: commit 方法来提交更改。现在,您可以通过 Google Play 管理中心或 API 检查相应草稿版本并进行发布。

指定版本说明

在发布应用的新版本时,您可以通过在版本中指定版本说明,向用户重点介绍新变化。

为此,请在向 Edits.tracks: update 方法提供 Edits.tracks 资源时使用 "releaseNotes" 字段。

{
  "releases": [{
      "name": "Release with notes",
      "versionCodes": ["88"],
      "status": "completed",
      "releaseNotes": [
        {"language": "en-US", "text": "Describe what's new in this release."}
      ]
  }]
}