APK 및 트랙

Google Play Developer API를 사용하면 앱의 새 APK를 업로드하고 다른 출시 트랙에 출시할 수 있습니다. 이렇게 하면 앱의 알파와 베타 버전을 배포할 수 있으며, 승인된 사용자가 사용할 수 있습니다. 또한 일부 앱 사용자에게 자동으로 제공되는 단계적 출시 버전을 배포할 수 있습니다. 단계적 출시 버전을 출시한 후에는 최종적으로 '프로덕션' 버전을 배포할 때까지 단계적 출시 버전 앱의 사용자 수를 점차 늘릴 수 있습니다.

APK 추가 및 수정

  1. Edits.apks: upload 메서드를 호출하여 하나 이상의 APK를 업로드합니다.

    이 메서드는 APK를 저장소 '버킷'에 업로드하며 이곳에서 APK를 '트랙'에 할당하여 사용자에게 배포할 수 있습니다. (edit이 삭제되면 edit에 업로드된 모든 APK도 삭제됩니다.)

  2. Edits.tracks: update를 호출하여 '트랙'에 APK를 출시합니다. 다음 트랙에 APK를 출시할 수 있습니다.

    • "alpha""beta"와 같은 테스트 트랙

      앱의 알파 및 베타 버전은 알파 및 베타 테스트 그룹에 지정한 사용자에게 배포됩니다. Google Play Console을 사용하여 이러한 그룹에 사용자를 할당합니다.

    • 내부 테스트 트랙: "qa"

      앱의 내부 버전은 Google Play Console에 구성된 대로 내부 테스트 트랙에 배포됩니다.

    • 프로덕션 트랙: "production"

      '프로덕션' 트랙의 출시 버전은 모든 사용자에게 배포됩니다. '프로덕션' 트랙에서 스테이징 버전을 사용하면 소수의 프로덕션 사용자에게 먼저 안전하게 출시 버전을 배포한 다음 버전의 신뢰도가 높아지면 이 비율을 점차 늘릴 수 있습니다.

    단순 모드 사용자는 트랙에 두 개 이상의 APK를 올리면 안 됩니다. 다중 APK 지원을 사용하는 고급 모드 사용자는 각 트랙에 APK를 업로드하지 않거나 1개 이상의 APK를 업로드할 수 있습니다.

폼 팩터 트랙의 트랙 이름

폼 팩터 트랙의 트랙 이름에는 특정 식별자가 접두어로 사용됩니다.

폼 팩터 접두어
Android Automotive OS Automotive
Wear OS Wear
Android TV TV

지정된 폼 팩터 트랙의 트랙 이름을 컴퓨팅하는 방법

프로덕션, 공개 테스트, 내부 테스트 트랙과 같은 일반적인 트랙 유형에는 잘 알려진 트랙 이름이 있습니다.

트랙 유형 기본 트랙 이름
프로덕션 프로덕션
공개 테스트 베타
내부 테스트 qa

지정된 폼 팩터 트랙의 트랙 이름은 다음과 같이 컴퓨팅할 수 있습니다. "[prefix]:defaultTrackName" 예를 들어 Wear OS 폼 팩터에는 이름이 "wear:production", "wear:beta", "wear:qa"인 트랙이 있습니다.

비공개 테스트 트랙은 수동으로 생성되며 맞춤 이름을 사용합니다. 따라서 이름이 $name인 폼 팩터의 비공개 테스트 트랙의 트랙 이름은 "[prefix]:$name"입니다.

APK 워크플로 예

이 섹션에서는 Tracks API의 일반적인 사용 방법을 설명합니다. 이 경우, 각 트랙에 새 버전의 APK를 업로드하고 단계적 출시 버전을 받을 일부 사용자를 지정한다고 가정합니다. (실제로 개발자가 모든 작업을 한 번에 실행하는 경우는 거의 없습니다. 대신, 어느 날에 베타 버전을 업데이트하고 다른 날에 스테이징 버전을 '프로덕션'에 생성하는 등의 방식일 수 있습니다.)

  1. Edits 워크플로에 설명된 대로 새 edit을 엽니다.
  2. 업로드할 APK마다 Edits.apks: upload 메서드를 호출합니다. 메서드의 요청 본문에 APK를 전달합니다. 그러면 APK가 저장소 영역에 배치되지만, 트랙에 출시되거나 배포되지 않습니다. 이 메서드는 업로드하는 APK마다 버전 코드를 반환합니다. 트랙에 APK를 출시할 때 버전 코드를 사용하여 APK를 참조합니다.
  3. APK를 출시하려는 각 트랙에 대해 Edits.tracks: update 메서드를 호출합니다. 요청 본문에 출시하려는 버전이 포함된 Edits.tracks resource 리소스를 전달합니다. 예를 들어, 버전 코드가 88인 APK를 출시하려면 다음과 같이 합니다.

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

    이 시점에서 사용자는 아직 APK를 사용할 수 없습니다. 다른 edit과 마찬가지로, edit이 커밋될 때까지 변경사항은 반영되지 않습니다.

  4. Edits: commit 메서드를 호출하여 변경사항을 커밋합니다. 이 메서드를 호출한 후에는 각 트랙의 사용자에게 업데이트된 버전의 APK가 제공됩니다. (모든 edit과 마찬가지로, 변경사항이 적용되려면 몇 시간이 소요될 수 있습니다.)

단계적 출시

새 버전의 APK를 점진적으로 배포하려고 하면 '단계적 출시' 버전으로 출시를 선택할 수 있습니다. 이렇게 하면, Google Play에서 개발자가 지정한 일부 앱 사용자에게 APK를 자동으로 배포합니다. '출시' APK에 문제(예: 비정상 종료 등)가 없으면 출시 버전을 받는 사용자의 비율을 늘릴 수 있습니다. 준비가 완료되면 APK를 새 프로덕션 버전으로 배포할 수 있습니다.

이 섹션에서는 APK의 단계적 출시를 실행한 다음 APK를 프로덕션으로 승급하는 단계를 설명합니다.

  1. Edits 워크플로에 설명된 대로 edit을 만듭니다.

  2. Edits.apks: upload 메서드를 사용하여 edit에 새 APK를 업로드합니다.

  3. Edits.tracks: update 메서드를 사용하여 프로덕션 트랙에서 "inProgress" 스테이징 버전을 시작합니다. 새 APK를 받아야 하는 사용자의 비율을 선택합니다. 이 시점에서 최종 사용자는 아직 APK를 사용할 수 없습니다.

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

  4. Edits: commit을 호출하여 활성 edit에서 변경사항을 커밋합니다. 앞으로 몇 시간 내에 새로운 APK가 사용자에게 출시됩니다. 지정된 사용자 비율만큼 새 APK를 받게 됩니다.

단계적 출시의 성공 여부에 따라 이 버전의 APK를 사용하는 사용자의 비율을 늘리거나 APK 사용을 중지할 수 있습니다.

단계적 출시의 사용자 비율 늘리기

이 섹션에서는 이전 섹션에서 설명한 대로 단계적 출시 진행을 5%로 가정하고 출시가 잘 진행되는 경우 비율을 늘리는 방법에 관해 설명합니다.

  1. Edits 워크플로에 설명된 대로 edit을 만듭니다.

  2. Edits.tracks: update 메서드를 사용하여 프로덕션 트랙의 "inProgress" 스테이징 버전을 변경합니다. 다음과 같이 새 APK를 받아야 하는 사용자의 비율을 늘립니다.

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

  3. Edits: commit을 호출하여 활성 edit에서 변경사항을 커밋합니다. 앞으로 몇 시간 내에 새로운 APK가 사용자에게 출시됩니다. 지정된 사용자 비율만큼 새 APK를 받게 됩니다.

단계적 출시 중지

이 섹션에서는 이전 섹션에서 설명한 대로 단계적 출시 진행을 5%로 가정하고 문제가 발견된 경우 단계적 출시를 중지하는 방법에 관해 설명합니다.

  1. Edits 워크플로에 설명된 대로 edit을 만듭니다.

  2. Edits.tracks: update 메서드를 사용하여 프로덕션 트랙의 "inProgress" 스테이징 버전을 변경합니다. 상태를 "halted"로 설정합니다.

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

  3. Edits: commit을 호출하여 활성 edit에서 변경사항을 커밋합니다. 이 버전은 더 이상 신규 사용자에게 제공되지 않습니다.

추후 중단된 버전을 재개하려면 상태를 "inProgress"로 다시 설정하면 됩니다.

단계적 출시 완료

단계적 출시가 만족스럽고 이 버전을 100%의 사용자에게 출시하고 싶다면 출시 상태를 "completed"로 설정하면 됩니다.

  1. Edits 워크플로에 설명된 대로 edit을 만듭니다.

  2. Edits.tracks: update 메서드를 사용하여 프로덕션 트랙의 "inProgress" 스테이징 버전을 변경합니다. 상태를 "completed"로 설정합니다.

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

  3. Edits: commit을 호출하여 활성 edit에서 변경사항을 커밋합니다. 앞으로 몇 시간 내에 새로운 APK가 사용자에게 출시됩니다. 지정된 사용자 비율만큼 새 APK를 받게 됩니다.

임시 버전

임시 버전을 사용하면 자동으로 APK를 업로드하고 추후 Google Play Console을 이용하여 배포할 수 있는 출시 버전을 API를 통해 생성할 수 있습니다. 트랙에 임시 버전을 만들려면 다음 단계를 따르세요.

  1. Edits 워크플로에 설명된 대로 새 edit을 엽니다.
  2. 업로드할 APK마다 Edits.apks: upload 메서드를 호출합니다. 메서드의 요청 본문에 APK를 전달합니다. 이 메서드는 업로드하는 각 APK의 버전 코드를 반환합니다. APK를 출시 버전에 지정할 때 이 버전 코드를 사용하여 APK를 참조합니다.
  3. 출시하려는 각 트랙에서 Edits.tracks: update 메서드를 호출합니다. 요청 본문에 생성하려는 임시 버전이 포함된 Edits.tracks resource를 전달합니다. 예:

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

  4. Edits: commit 메서드를 호출하여 변경사항을 커밋합니다. 이제 Google Play Console 또는 API를 통해 임시 버전을 검사하고 출시할 수 있습니다.

출시 노트 지정

새 버전의 애플리케이션을 출시할 때 출시 버전에 출시 노트를 작성하여 사용자에게 새로운 기능을 쉽게 알릴 수 있습니다.

이렇게 하려면 Edits.tracks: update 메서드에 Edits.tracks resource를 제공할 때 "releaseNotes" 필드를 사용합니다.

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