피드로 돌아가기
올리브영 테크블로그Mobile
원문 읽기
앱 버전 관리하기
올리브영이 시맨틱 버저닝 전략과 versionCode/versionName 이원 체계로 안드로이드 앱 버전 관리를 표준화하고 productFlavor로 4가지 빌드 배리언트 생성
AI 요약
Context
버전 이름 자동 설정을 도입했다가 예상치 못한 영역에 영향을 미쳐 문제가 발생했으며, 이를 통해 앱 버전 관리의 중요성을 인식하게 되었다.
Technical Solution
- 시맨틱 버저닝(Semantic Versioning) 채택: MAJOR.MINOR.PATCH 형식으로 API 호환성 및 기능 추가 여부에 따라 각 자리 증가
- versionCode를 정수 기반 시스템으로 구성: Google Play Store에서 업데이트 추적용으로 1씩 증가하며 재사용 불가, 사용자 비공개
- versionName을 문자열 기반 시스템으로 구성: 사용자에게 공개되는 표시용 버전으로 시맨틱 버저닝 규칙 적용
- productFlavor를 version dimension으로 정의: develop과 operation 두 가지 선택지 구성
- build type(debug/release)과 flavor 조합: 4가지 빌드 배리언트(debugDevelop, releaseDevelop, debugOperation, releaseOperation) 자동 생성
- applicationIdSuffix와 versionNameSuffix 옵션 활용: 각 flavor별로 고유한 applicationId와 버전명 접미사 설정
Impact
Google Play Store에서 허용하는 versionCode 최대값은 2,100,000,000이다.
Key Takeaway
안드로이드 앱 개발에서 versionCode와 versionName의 이원 체계를 명확히 구분하고, 시맨틱 버저닝 전략을 기획 단계부터 적용하면 버전 관리 자동화와 다중 빌드 배리언트 관리의 복잡성을 동시에 해결할 수 있다. 다만 productFlavor 적용 시 예상치 못한 전체 시스템 영향도를 사전 검토해야 한다.
실천 포인트
안드로이드 멀티 빌드 환경을 구축하는 팀에서 productFlavor의 dimension 정의 순서에 따라 Build Variant 이름과 폴더 경로 읽기 순서가 달라지므로, dimension 정의 전에 빌드 조합 수의 기하급수적 증가를 검토하고 의미 있는 배리언트만 생성하도록 제약해야 한다.