APK 和測試群組

Google Play Developer API 可讓您為應用程式上傳新的 APK,並發布至不同的測試群組。如此一來,您可以部署應用程式的 Alpha 和 Beta 版,提供給已核准的使用者。這也可讓您部署階段推出版本,自動提供給少數應用程式使用者。發布階段推出版本後,您可以逐步增加取得該應用程式版本的使用者人數,直到您最終將該版本部署為「正式版」為止。

新增及修改 APK

  1. 呼叫 Edits.apks: upload 方法,上傳一或多個 APK。

    這個方法會將 APK 上傳至儲存空間「值區」,並指派給「測試群組」,以便向使用者部署。(如果編輯內容遭到刪除或捨棄,上傳至該編輯項目的 APK 也會全部遺失)。

  2. 呼叫 Edits.tracks: update,藉此在「tracks」上發布 APK。您可以在下列測試群組中發布 APK:

    • 測試群組,例如 "alpha""beta"

      系統會將應用程式的 Alpha 和 Beta 版本部署到您指派給 Alpha 和 Beta 測試群組的使用者。您可以透過 Google Play 管理中心將使用者指派給這些群組。

    • 內部測試群組:"qa"

      應用程式的內部版本會依照 Google Play 管理中心的設定,部署至內部測試群組。

    • 正式版群組:"production"

      「正式版」測試群組中的版本會部署到所有使用者。您可以運用「正式版」測試群組的階段發布功能,先安全地為少數正式版使用者部署版本,然後再隨著版本可信度逐漸增加,逐步提高這個百分比。

    簡易模式使用者不得在任何測試群組中放置多個 APK。使用多個 APK 的進階模式使用者可以為每個測試群組上傳零、一或多個 APK。

板型規格測試群組的名稱

板型規格測試群組的名稱前置字串是特定 ID。

板型規格 前置字串
Android Automotive OS 機動車輛
Wear OS Wear
Android TV 電視

如何計算特定板型規格測試群組的名稱?

常見的測試群組類型 (例如正式版、公開測試和內部測試群組) 都有已知的測試群組名稱。

追蹤類型 預設音軌名稱
正式版 製片
公開測試 Beta 版
內部測試 qa

特定板型規格音軌的測試群組名稱可視為:"[prefix]:defaultTrackName"。舉例來說,Wear OS 板型規格的測試群組名稱為:"wear:production""wear:beta""wear:qa"

封閉測試群組需要手動建立,並具有自訂名稱。因此,名稱為 $name 的板型規格的封閉測試群組,測試群組名稱為 "[prefix]:$name"

APK 工作流程範例

本節將說明 Tracks API 的一般使用方式。在此情況下,我們假設您想為每個測試群組上傳新版 APK,並指派多位使用者取得階段推出版本。(實務上,開發人員不太可能在同一操作中執行所有這些動作;反之,您可以在一天內更新 Beta 版本,在另一天建立階段版本,依此類推)。

  1. 按照編輯工作流程所述,開啟新的編輯內容。
  2. 為每個您要上傳的 APK 呼叫 Edits.apks: upload 方法。將 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. 按照編輯工作流程所述建立編輯內容。

  2. 使用 Edits.apks: upload 方法,將新的 APK 上傳至編輯內容。

  3. 使用 Edits.tracks: update 方法,在正式版群組上啟動 "inProgress" 階段版本。選擇要收到新 APK 的使用者比例。此時,所有使用者仍可使用 APK。

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

  4. 呼叫 Edits: 修訂,修訂使用中編輯的變更內容。在接下來幾小時內,我們將會向使用者推出新的 APK。您選取的使用者比例將收到新的 APK。

視階段推出的成效而定,您可能會想增加符合該版本使用資格的使用者百分比,或暫停發布版本。

提高階段推出作業的使用者人數比例

假設您正如上一節所述,分階段推出比例為 5%,本節說明如何在版本順利的情況下提高百分比:

  1. 按照編輯工作流程所述建立編輯內容。

  2. 使用 Edits.tracks: update 方法,變更正式版群組上的 "inProgress" 階段版本。增加應接收新 APK 的使用者比例:

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

  3. 呼叫 Edits: 修訂,修訂使用中編輯的變更內容。在接下來幾小時內,我們將會向使用者推出新的 APK。您選取的使用者比例將收到新的 APK。

暫停階段推出作業

假設您已按照上一節所述進度在 5% 進行階段推出,本節將說明如何在發現問題時暫停階段推出:

  1. 按照編輯工作流程所述建立編輯內容。

  2. 使用 Edits.tracks: update 方法,變更正式版群組上的 "inProgress" 階段版本。將狀態設為 "halted"

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

  3. 呼叫 Edits: 修訂,修訂使用中編輯的變更內容。您的版本將不會再提供給新使用者。

如果您之後決定繼續執行已暫停的版本,可以將狀態改回 "inProgress"

完成階段推出

當您滿意階段推出作業,且希望向所有使用者推出該版本時,您可以將版本狀態設為 "completed"

  1. 按照編輯工作流程所述建立編輯內容。

  2. 使用 Edits.tracks: update 方法,變更正式版群組上的 "inProgress" 階段版本。將狀態設為 "halted"

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

  3. 呼叫 Edits: 修訂,修訂使用中編輯的變更內容。在接下來幾小時內,我們將會向使用者推出新的 APK。您選取的使用者比例將收到新的 APK。

草稿版本

草稿版本可讓您自動上傳 APK 並透過 API 建立版本,之後再透過 Google Play 管理中心部署。如何在測試群組中建立草稿版本:

  1. 按照編輯工作流程所述,開啟新的編輯內容。
  2. 為每個您要上傳的 APK 呼叫 Edits.apks: upload 方法。將 APK 傳遞至方法的要求主體中。這個方法會針對您上傳的每個 APK 傳回版本代碼;您要將其指派給版本時,都會使用這個版本代碼來參照 APK。
  3. 針對要發布的每個測試群組,呼叫 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."}
      ]
  }]
}