티스토리 뷰

반응형

앱 버전 설정하는 방법
build.gradle에 아래와 같이 versionCodeversionName을 적어줍니다.
android {
  ...
  defaultConfig {
    ...
    versionCode 1
    versionName "1.0.0"
  }
  ...
}

항상 두 가지 설정에 대한 값을 모두 정의해야 합니다. versionCodeversionName에 값을 채워넣기전에 각 변수가 어떤 용도로 쓰이는지 알아보겠습니다.

versionCode
정수이며, 내부 버전 번호로 사용됩니다.
이 번호는 하나의 버전이 다른 버전보다 최신인지 여부를 판단하는 데만 사용되며, 번호가 높을수록 최신 버전입니다.
이 값은 원하는 정수로 설정할 수 있지만 각 후속 앱 릴리스 시에 더 큰 값을 사용해야 합니다.

사용자에게 표시되는 번호는 아래에 있는 versionName으로 설정합니다.

일반적으로 앱의 첫 번째 버전은 versionCode를 1로 설정하여 릴리스하고,
릴리스가 주 릴리스이든, 부 릴리스이든지에 관계없이 각 릴리스마다 순차적으로 값을 증가시킵니다.
versionCode 값은 사용자에게 표시되는 앱 릴리스 버전(아래 versionName)과 유사할 필요는 없습니다.

참고로 Google Play에서 versionCode에 대해 허용하는 가장 큰 값은 2100000000입니다.

versionName
문자열이며, 사용자에게 표시되는 버전 번호로 사용됩니다.
설정은 문자열을 직접 적거나, 문자열 리소스에 대한 참조로 지정할 수 있습니다.
versionName은 사용자에게 표시하는 것 이외에 다른 용도는 없습니다. 따라서 별도로 시스템상으로 강제하고 있지 않습니다.

하지만 versionCode와 같이 구분되지 않는 숫자로 versionName을 표시한다면 사용자에게 어떤 업데이트가 발생했는지를 직관적으로 보여주기 어렵습니다.
그래서 보통은 앱 버전(versionName)을 <major>.<minor>.<point> 식으로 구분하여 표현하고 있습니다.

□ 이전 버전과 비교하여 UI나 기능상 큰 변경이 일어났을 때 <major>를 1증가시킵니다.
보통 2.0.0 , 2.1.0 식으로 써주고 있습니다.

□ 하나의 새로운기능이나 앱 내의 중요 컨텐츠가 몇가지 변경되었을 경우 <minor>를 1 증가시킵니다.
보통 1.2.0, 1. 3.0 등으로 써주고 있습니다.
 
□ 버그 수정등의 간단한 업데이트의 경우 맨 뒤 <point>를 1 증가시킵니다.
보통 1.1.1에서 1.1.2식으로 써주고 있습니다.

app version을 설정하는 방법을 알아봤으니,
어떻게 version 정보를 받아오는지 알아보겠습니다.

Context가 필요한 방법
public String getVersionInfo(Context context) {
        String version = "Unknown";
        PackageInfo packageInfo;

        if (context == null) {
            return version;
        }
        try {
            packageInfo = context.getApplicationContext()
                    .getPackageManager()
                   .getPackageInfo(context.getApplicationContext().getPackageName(), 0 );
            version = packageInfo.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            Logger.e(TAG, "getVersionInfo :" + e.getMessage());
        }
        return version;
    }

Context가 필요없는 방법
Android Studio & Gradle plugin 환경에서 version code와 version name을 BuildConfig를 통해 정적으로 사용할 수 있습니다.
BuildConfig를 import하면 되는데, 이때 다른 경로가 아닌 app package를 import해야 합니다.

import com.yourpackage.BuildConfig;
...
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;
반응형
댓글
공지사항
최근에 올라온 글