안드로이드 시스템·Compose 용어 사전
배포staged rollout · 인앱 업데이트

단계적 출시

일부 사용자에게 먼저 배포해 문제를 조기에 잡는 방식. 중단·롤백이 가능하다.

일부 사용자에게 먼저 배포해 문제를 조기에 잡는다.

트랙
  내부 테스트   최대 100명. 즉시 반영. 팀 검증용
  비공개 테스트  지정한 그룹
  공개 테스트   누구나 참여 (오픈 베타)
  프로덕션      전체

프로덕션에서 1% → 5% → 20% → 50% → 100% 로 올린다

왜 100%로 바로 안 내보내나

한 번 배포하면 되돌릴 수 없다 Play 는 '이전 버전으로 롤백' 을 지원하지 않는다 (출시 중단은 되지만, 이미 업데이트한 사용자는 그대로다)

1% 에서 크래시율이 튀면

  • 출시를 중단(halt) 한다
  • 나머지 99% 는 영향을 받지 않는다
  • 수정 버전을 새 버전 코드로 올린다

무엇을 보고 판단하나

Android vitals
  크래시율        사용자 인지 크래시 1.09% 초과 시 불이익
  ANR 율          0.47% 초과 시 불이익
  과도한 배터리 사용
  느린 시작 시간

임계를 넘으면 스토어 노출이 줄어든다 — 배포 후 며칠은 반드시 본다

인앱 업데이트

appUpdateManager.appUpdateInfo.addOnSuccessListener { info ->
    if (info.updateAvailability() == UPDATE_AVAILABLE &&
        info.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
        appUpdateManager.startUpdateFlowForResult(info, IMMEDIATE, activity, REQ)
    }
}
  • IMMEDIATE — 전체 화면을 막고 업데이트한다 — 구버전이 서버와 호환되지 않을 때

  • FLEXIBLE — 백그라운드로 내려받고 사용자가 원할 때 재시작 — 일반적인 개선

  • IMMEDIATE 를 남발하면 사용자가 앱을 못 쓴다 — 정말 필요할 때만

인앱 결제 — 서버 검증이 필수인 이유

클라이언트만 믿으면

  • 앱을 리버싱해 "결제 성공" 응답을 위조할 수 있다
  • 결제 우회 도구가 실제로 존재한다
  • 환불 후에도 권한이 남는다

올바른 흐름

  • ① 앱에서 결제 → purchaseToken 을 받는다
  • ② 토큰을 서버로 보낸다
  • ③ 서버가 Google Play Developer API 로 검증한다
  • ④ 서버가 사용자 권한을 부여한다
  • ⑤ 서버가 acknowledge/consume 한다

3일 안에 acknowledge 하지 않으면 자동 환불된다 — 실제로 자주 놓치는 지점 RTDN(실시간 개발자 알림) 으로 갱신·취소·환불을 받아 처리한다

면접 함정

  • "Play는 롤백을 지원한다" → 하지 않는다. 단계적 출시가 사실상 유일한 안전장치다.
  • "결제는 라이브러리가 검증해 준다" → 클라이언트 검증은 우회 가능하다. 서버 검증이 유일한 신뢰 지점이다.

버전 코드와 버전 이름

versionCode = 142        // 정수. Play 가 '어느 것이 최신인지' 판단하는 유일한 기준
versionName = "3.4.1"    // 사용자에게 보이는 문자열. Play 는 신경 쓰지 않는다

versionCode 는 되돌릴 수 없다 — 한 번 올리면 그보다 낮은 것을 못 올린다 출시를 중단해도 그 코드는 소모된 것이다

  • 수정본은 반드시 더 높은 코드로 올린다

사전 출시 보고서

업로드하면 Play 가 실제 기기 팜에서 앱을 자동으로 돌린다

  • 크래시 · ANR
  • 접근성 문제 (터치 영역 · 대비 · 레이블 누락)
  • 보안 취약점 (알려진 취약 라이브러리)
  • 화면 캡처

무료이고 배포 전에 나온다 — 안 보는 것이 손해다

타깃 API 요구

Play 는 매년 targetSdk 하한을 올린다 기한이 지나면 새 앱·업데이트를 올릴 수 없고, 더 지나면 신규 사용자에게 노출되지 않는다

targetSdk 를 올린다는 것은 그 버전의 동작 변경을 전부 받아들인다는 뜻이다

  • 올릴 때마다 동작 변경 목록을 확인하고 테스트한다

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 배포·인앱·국제화 — Play Store·결제·업데이트·다국어