Skip to content

Android 앱 차등 업데이트 완전 통합 문서 (UpgradeLink + DiffUpdater 기반)

I. 차등 업데이트의 핵심 개념

차등 업데이트(증분 업데이트라고도 함)는 효율적인 앱 업데이트 솔루션입니다. 그 핵심 로직은: 앱을 업데이트할 때 전체 대상 버전 설치 패키지(APK 패키지)가 아닌 현재 버전과 대상 버전 간의 차이 부분(일반적으로 "패치 패키지"라고 함)만 다운로드하는 것입니다.

기존의 전체 업데이트와 비교하여 차등 업데이트의 핵심 장점은 다음과 같습니다:

  1. 데이터 소비 감소: 패치 패키지 크기는 완전한 APK의 10%-30%에 불과합니다(버전 차이에 따라 다름). 이를 통해 업데이트 중 사용자의 네트워크 데이터 비용을 크게 절감합니다;
  2. 업데이트 효율 향상: 더 작은 패치 패키지는 더 빨리 다운로드되며, 특히 약한 네트워크 환경에서 업데이트 대기 시간을 단축합니다;
  3. 서버 부하 감소: 서버는 작은 크기의 패치 패키지만 배포하면 되므로 대역폭 사용량과 저장 공간 오버헤드를 줄입니다.

그 기본 원리는 특정 알고리즘(BSDiff, HDiffPatch 등)을 통해 구와 신 APK 파일의 바이너리 데이터를 비교하고, 차이 내용을 추출하여 패치 패키지를 생성하는 것입니다. 클라이언트가 패치 패키지를 다운로드한 후 로컬 구 APK와 병합하여 완전한 대상 버전 APK를 생성하고 최종적으로 설치 및 업데이트를 완료합니다.

II. 핵심 시스템 소개

UpgradeLink는 차등 업데이트 솔루션의 백엔드 서비스 핵심으로, 전체 업데이트 프로세스에 필요한 기본 기능과 구성 지원을 제공하는 데 중점을 두어 개발자가 백엔드 로직의 구현 세부 사항에 주의할 필요를 없애줍니다.

핵심 기능:

  1. 버전 관리: 앱의 역사적 버전 및 대상 버전 정보를 유지 관리하고 각 버전의 APK 패키지 및 패치 패키지 저장 주소를 기록합니다;
  2. 업데이트 규칙 구성: 강제 업데이트/선택적 업데이트, 채널별 업데이트, 버전 범위 제한 등과 같은 규칙을 설정할 수 있습니다;
  3. 패치 패키지 생성 및 저장: 차등 알고리즘과 인터페이스를 통해 구 버전과 신 버전 APK를 기반으로 자동으로 패치 패키지를 생성 및 저장하고 안정적인 다운로드 링크를 제공합니다;
  4. 업데이트 상태 검증: 클라이언트로부터 버전 쿼리 요청을 받고 대상 버전 정보, 패치 패키지 주소, 업데이트 규칙 등과 같은 핵심 데이터를 반환합니다;
  5. 호환성 지원: 다양한 Android 시스템 버전과 아키텍처를 가진 기기에 적응하여 업데이트 프로세스의 범용성을 보장합니다.

핵심 가치:

클라이언트에게 "원스톱" 업데이트 결정 지원을 제공합니다. 개발자는 독립적인 업데이트 백엔드를 구축할 필요 없이 API를 호출하여 업데이트에 필요한 모든 구성 정보를 신속하게 얻을 수 있으며, 프론트엔드 업데이트 상호 작용 및 로직 처리에 집중할 수 있습니다.

(II) DiffUpdater: Android 차등 업데이트 SDK

DiffUpdater는 Android 앱을 위해 특별히 설계된 경량 차등 업데이트 개발 도구킷입니다. 클라이언트 측에서 패치 패키지 다운로드, 병합, 설치 등과 같은 구체적인 작업을 완료하는 역할을 하며, 사용의 편의성과 커스터마이즈가 특징입니다.

핵심 기능:

  1. 패치 패키지 처리: 주류 차등 알고리즘을 지원하며(patchAlgo 매개변수를 통해 지정 가능), 로컬 구 APK와 다운로드한 패치 패키지를 효율적으로 병합하여 완전한 대상 버전 APK를 생성합니다;
  2. 다운로드 관리: 내장된 패치 패키지 다운로드 기능을 제공하며, 중단 지점에서 재개, 다운로드 진행 상황 모니터링, 다운로드 실패 후 자동 재시도를 지원합니다;
  3. 설치 적응: Android 시스템 설치 권한 요청, APK 파일 검증(MD5/SHA), 무음 설치(시스템 권한 필요) 또는 수동 설치 안내를 자동으로 처리합니다;
  4. 상태 콜백: 다운로드 진행 상황, 병합 상태, 설치 결과 등과 같은 주요 이벤트를 앱에 반환하여 업데이트 상태의 프론트엔드 UI 표시를 용이하게 합니다;
  5. 커스터마이즈 지원: 커스텀 다운로드 경로, 업데이트 팝업 스타일, 실패 처리 로직 등을 지원하여 다양한 앱의 상호 작용 요구에 적응합니다.

핵심 장점:

  • 경량화 및 의존성 무료: SDK 크기가 작고 추가적인 불필요한 의존성이 없어 앱 패키지 크기 증가를 방지합니다;
  • 안정적이고 효율적: 최적화된 병합 알고리즘, 낮은 메모리 사용량, 빠른 병합 속도, 저사양 기기와의 호환성을 보장합니다;
  • 통합이 쉬움: 간결한 API 인터페이스를 제공하여 개발자가 차등 병합의 기본 구현에 주의를 기울이지 않고 빠르게 통합할 수 있습니다.
  1. 프론트엔드가 업데이트 확인을 트리거: 앱이 시작되거나 사용자가 수동으로 업데이트를 트리거한 후 프론트엔드 UI가 업데이트 쿼리 상태를 표시합니다. patchAlgo 매개변수를 지정하여(차등 알고리즘 선택) UpgradeLink의 API 인터페이스를 호출하고 현재 앱 버전 번호, 채널 번호 등과 같은 정보를 전달합니다;
  2. 백엔드가 업데이트 구성을 반환: UpgradeLink는 전달된 매개변수를 기반으로 업데이트 규칙을 검증하고 결과를 반환합니다(차등 업데이트가 지원되면 패치 패키지 주소, 대상 버전 번호, 검증 정보 등을 반환합니다; 지원되지 않으면 전체 APK 주소를 반환하고 전체 업데이트 프로세스를 따릅니다);
  3. 클라이언트가 패치 패키지를 처리: DiffUpdater는 UpgradeLink가 반환한 패치 패키지 주소를 받아 패치 패키지 다운로드를 시작하고(진행 상황 모니터링 포함), 다운로드가 완료된 후 파일 무결성을 검증합니다;
  4. 차등 병합하여 신 APK 생성: DiffUpdater는 지정된 차등 알고리즘을 호출하여 로컬 구 버전 APK와 다운로드한 패치 패키지를 병합하고, 완전한 대상 버전 APK를 생성하며 MD5 검증을 수행하여 파일이 올바른지 확인합니다;
  5. 설치 및 업데이트 트리거: DiffUpdater는 자동으로 설치 권한을 요청하고, 사용자가 대상 버전 APK의 설치를 완료하도록 안내하며, 설치 후 앱은 자동으로 새로운 버전을 시작합니다;
  6. 예외 처리: 다운로드 실패, 병합 실패 또는 설치 실패의 경우 시스템이 자동으로 실패 상태를 콜백하며, 사용자는 작업을 재시도하거나 전체 업데이트 프로세스로 전환할 수 있습니다.

IV. 핵심 요약

  • UpgradeLink는 "백엔드 지원"을 담당합니다: 업데이트 규칙, 버전 정보, 패치 패키지 리소스를 제공하여 "무엇을 업데이트하고 어떻게 업데이트할지"에 대한 의사 결정 문제를 해결합니다;
  • DiffUpdater는 "프론트엔드 실행"을 담당합니다: 패치 패키지 다운로드, 병합, 설치를 완료하여 "업데이트를 어떻게 구현할지"에 대한 실행 문제를 해결합니다;
  • 두 시스템이 함께 작동하여 "백엔드 구성 - 프론트엔드 실행"의 완전한 차등 업데이트 솔루션을 형성하여 개발자가 가장 낮은 비용으로 효율적이고 데이터를 절약하는 앱 업데이트 기능을 구현하도록 돕고 사용자 경험과 개발 효율성을 향상시킵니다.

toolsetlink@163.com