IT/안드로이드+JAVA

[안드로이드] 앱 버전 비교 예제 (버전 표기법, 규칙)

안경 쓴 귀니 2020. 12. 2. 00:13
반응형

일반적으로 앱 버전을 표기하는 방법과 규칙에 대해 설명한다.

 

 

버전 표기법

  • 일반적으로 앱 버전은 1.0.0 식의 구조를 가지고 있으며 점(.)으로 구분된다.
  • <Major Version> . <Minor Version> . <Build or Maintenance Version>
    • Major Version: 1부터 시작. 앱 전체 디자인 또는 기능 등이 매우 크게 바뀌는 경우 올림
    • Miner Version: 0부터 시작. 기능 추가 기능 변경 등의 경우 올림
    • Build or Maintenance Version: 1부터 시작. 자잘한 버그 수정, 코드 보완 등 미미한 변화가 발생한 경우 올림. 패치 버전이라고도 함

 

 

버전 비교 참고사항

  • 버전은 소수가 아닌 각 버전의 숫자다.
    예를 들어 1.0.1과 1.0.10 두 버전이 있을 때 아래와 같다.
    • 1.0.1과 1.0.10은 같은 버전이 아니다.
    • 1.0.1은 1번째 메이저 버전, 1번째 패치 버전이다.
    • 1.0.10은 1번째 메이저 버전, 10번째 패치 버전이다.
  • 1.9과 1.10 버전이 있을 때 1.10 버전이 최신 버전이다.
    • 1.9는 1번째 메이저 버전, 9번재 패치 버전이다.
    • 1.10은 1번째 메이저 버전, 10번째 패치 버전이다.
  • 01.01.10 버전을 간략하게 표현하면 1.1.1이 아닌 1.1.10이다.

 

 

 

앱 버전 비교하기 예제

다음 예제는 앱 버전과 비교 버전을 비교하여 업데이트가 필요한지 체크하는 예제이다.

앱 버전과 비교 버전의 자릿수가 다른 경우(ex. 앱 버전 2.0, 비교 버전 1.0.0)는 짧은 버전의 버전을 0으로 처리한다.

public static boolean compareVersion(String appVersion, String compareVersion) {
    boolean isNeedUpdate = false;
    String[] arrX = appVersion.split("[.]");
    String[] arrY = compareVersion.split("[.]");

    int length = Math.max(arrX.length, arrY.length);

    for(int i = 0; i < length; i++){
        int x, y;
        try {
            x = Integer.parseInt(arrX[i]);
        } catch (ArrayIndexOutOfBoundsException e) {
            x = 0;
        }
        try {
            y = Integer.parseInt(arrY[i]);
        } catch (ArrayIndexOutOfBoundsException e) {
            y = 0;
        }

        if(x > y) {
            // 앱 버전이 큼
            isNeedUpdate = false;
            break;
        }else if(x < y){
            // 비교 버전이 큼
            isNeedUpdate = true;
            break;
        } else {
            // 버전 동일
            isNeedUpdate = false;
        }
    }
    return isNeedUpdate;
}

 

반응형