앱 업데이트 작동 방식

이 가이드에서는 Android 플랫폼과 Google Play에서 앱 업데이트를 처리하는 방법을 설명하고 여러 앱 스토어에 앱을 게시하는 개발자를 위한 다양한 옵션을 설명합니다.

Android에서 앱 업데이트를 처리하는 방법

모든 Android 앱에는 com.example.myapp과 같이 자바 또는 Kotlin 패키지 이름처럼 보이는 고유한 애플리케이션 ID가 있습니다. 이 ID로 기기의 각 앱을 고유하게 식별할 수 있습니다. Android 기기에는 특정 애플리케이션 ID를 갖는 앱이 하나만 설치되어야 합니다.

Android 플랫폼에서 업데이트를 수락하려면 다음 조건을 충족해야 합니다.

  • 업데이트의 애플리케이션 ID는 설치된 앱과 동일해야 합니다.
  • 업데이트의 서명 인증서는 설치된 앱의 서명 인증서와 같거나 유효한 키 순환 증빙 자료를 포함하고 있어야 합니다.
  • 업데이트의 버전 코드는 설치된 앱의 버전 코드와 같거나 그보다 높아야 합니다.
  • 사용자가 업데이트를 수락해야 하는 경우도 있습니다.

업데이트의 서명 인증서가 동일하며 버전 코드가 같거나 더 높은 경우 서로 다른 설치 프로그램에서 앱을 업데이트하지 못하게 차단할 수 있는 기본적인 기능은 없습니다.

위의 조건을 충족하지 않는 앱을 설치하려면 사용자가 먼저 현재 설치된 버전을 제거해야 합니다. 그러면 기기에서 모든 앱 데이터가 삭제됩니다.

Google Play에서 앱을 업데이트하는 방법

Google Play의 앱 업데이트 방식은 다음의 원칙을 기반으로 합니다.

  • 사용자에게 최신 버전을 제공합니다. 사용자를 보안 문제로부터 보호하고 최신 기능 개선사항을 제공하려면 앱을 최신 상태로 유지하는 것이 좋습니다.
  • 사용자의 선택을 존중합니다. Google Play는 사용자 계정과 연결된 앱을 업데이트하며 이때 사용자가 선택한 업데이트 환경설정(예: 데이터 전송량 제한 기능 허용 또는 차단)을 따릅니다.
  • 개발자의 선택을 존중합니다. Google Play는 앱 업데이트를 결정할 때 개발자의 구성 옵션을 사용합니다.
  • 리소스 낭비를 피합니다. 업데이트가 다운로드되는 시점을 최적화함으로써 배터리 수명을 절약하고 압축 및 패치와 같은 기법을 사용해 데이터 사용량을 최소화합니다.

Google Play는 다음 조건을 충족하는 경우 기기에 설치된 특정 앱을 업데이트합니다.

  • 앱이 동일한 애플리케이션 ID로 Google Play에 게시되어 있습니다.
  • 게시된 앱의 서명 인증서가 현재 설치된 버전의 서명 인증서와 일치하거나 유효한 키 순환 증빙 자료가 포함되어 있습니다.
  • 사용자 라이브러리에 포함되어 있거나 OEM에 의해 미리 로드된 앱입니다.
  • 개발자가 정의한 타겟팅 옵션에 따라 이 사용자 및 기기에서 사용 가능한 앱입니다.
  • 설치된 앱이 Google Play에서 제공하는 버전에 비해 이전 버전입니다.

이러한 조건이 충족되면 Google Play에서 앱을 업데이트할 수 있습니다. 아래 하위 섹션에서는 몇 가지 조건을 자세히 설명합니다.

Google Play에서 Android 버전 코드를 변경하지 않고 개발자 콘텐츠를 대신하여 앱 콘텐츠를 다운로드하거나 앱 바이너리에서 유지보수를 실행하는 경우도 있습니다(예: 부분 다운로드 완료 또는 주문형 분할 다운로드).

Google Play에 게시됨

Google Play에서는 애플리케이션 ID를 사용하여 Google Play에 게시된 애플리케이션을 고유하게 식별합니다. 설치된 앱의 애플리케이션 ID가 Google Play에 게시된 앱의 애플리케이션 ID와 일치하는 경우 이 조건이 충족됩니다.

사용자 라이브러리의 일부

다음 조건 중 하나에 해당하는 경우 이 조건이 충족됩니다.

  • 기기에 있는 활성 상태의 Google 계정이 이전에 Google Play에서 설치 또는 구매 버튼을 탭하여 앱을 설치했습니다.
  • OEM이 시스템 이미지의 일부로 앱을 미리 로드했습니다.

사용자는 라이브러리에서 앱을 수동으로 삭제할 수도 있습니다.

이전 버전

Google Play에서는 버전 코드를 확인하여 기기에 설치된 앱이 최신 버전인지 확인합니다. Google Play에서 다운로드할 수 있는 버전의 버전 코드가 설치된 버전보다 높은 경우 Google Play는 설치된 앱이 이전 버전이라고 간주합니다.

여러 앱 스토어의 앱

여러 앱 스토어에 앱을 게시할 때 교차 스토어 업데이트를 제어하는 몇 가지 방법이 있습니다. 다음 섹션에서는 이러한 옵션과 각 옵션의 장단점을 설명합니다.

교차 스토어 업데이트 방지

각 앱 스토어에서 앱의 교차 스토어 앱 업데이트를 실행하지 못하도록 할 수 있습니다. 앱 콘텐츠가 앱 스토어마다 다르면 이 기능을 선택하는 것이 좋습니다. 이렇게 하려면 두 개의 서로 다른 애플리케이션 ID로 앱을 게시하거나, 동일한 애플리케이션 ID를 사용하되 두 개의 서로 다른 서명 키로 앱을 게시하면 됩니다.

키 도용으로 인한 위험을 줄이기 위해 서명 키의 재사용을 최소화하는 것이 좋습니다. 따라서 각 앱 스토어에 대해 다른 앱 서명 키를 사용합니다. 그렇게 하면 교차 스토어 업데이트가 방지됩니다.

어떤 접근 방식을 선택하든 Android는 일치하는 애플리케이션 ID와 서명 키가 없는 앱은 호환되지 않는 것으로 취급합니다. 한 스토어에서 다른 스토어로 전환하려면 사용자가 설치된 앱을 삭제하여 해당 앱과 관련된 모든 데이터를 삭제하고 다른 스토어에서 재설치해야 합니다.

교차 스토어 업데이트 허용

각 앱 스토어에서 앱의 교차 스토어 앱 업데이트를 실행하도록 할 수 있습니다. 이 작업은 모든 앱 스토어에서 동일한 콘텐츠로 앱을 배포하고 사용자에게 최신 버전을 제공하는 것을 우선시하려는 경우에 사용할 수 있습니다. 앱을 게시하는 모든 앱 스토어에서 동일한 애플리케이션 ID와 서명 키를 사용하면 각 앱 스토어가 사용자가 앱을 처음 다운로드한 위치에 관계없이 앱 설치를 업데이트할 수 있습니다.

그러나 이렇게 하면 각 앱 스토어가 교차 스토어 앱 업데이트를 구현하도록 선택하는 방법에 따라 사용자에게 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 사용자가 한 스토어의 업데이트를 사용 중지해도 다른 스토어에서 계속 업데이트를 제공할 수 있습니다.

이전에 교차 스토어 업데이트를 허용했지만 특정 업데이트 소스가 기기에 있을 때 이 업데이트 소스를 선호하도록 지정하려는 경우, 선호하는 앱 스토어에서 더 높은 버전 코드로 앱을 출시하고 다른 앱 스토어에서는 계속 낮은 버전 코드를 사용해 출시할 수 있습니다. 선호하는 소스로부터 상위 버전 코드 업데이트가 설치되면 다른 앱 스토어가 해당 기기에서 교차 업데이트를 할 수 없게 됩니다.