profile image

L o a d i n g . . .

반응형

안드로이드 코틀린 앱 버전 표시하기

Android Kotlin get AppVersionName

 

안드로이드 앱을 접하면서 메인 구석에 버전을 표시하는 것을 많이 볼 수 있다.

버전 표시에 해당 앱을 업데이트 할 때 마다 수동적으로 버전을 바꾸어 줄 수 있고, 아니면 그레이들에 정의한 버전이름을 가져와서 표시 할 수 있다.

그레이들에 있는 버전을 가져와서 표시하는 것이 가장 편리하고 실수 없이 정확하다고 생각이 든다, 왜냐하면 업데이트를 하고 플레이스토어에 올릴려면 그레이들의 버전을 꼭 올려야 하기때문이다. 

 

그레이들에 정의한 앱 버전이름을 가져오는 방법은 이미 안드로이드에서 제공해주기 때문에 우리는 잘 가져다 쓰기만 하면 된다.

그리고 이 방법 또한 무척이나 쉽다.

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.work.Sample"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

이에 앞서 버전이름은 app단의 build.gradle에서 확인할 수 있다.

defaultConfig에서 versionName을 확인할 수 있다.

fun getVersion(context : Context): String? {
     var versionName = ""
     val pm = context.packageManager.getPackageInfo(context.packageName, 0)
     versionName = pm.versionName
     
     return versionName
}

위는 간단하게 버전이름만 가져오는 함수이다.

넘겨받은 context를 이용해서 packageManager.getPackageInfo(context.packageName, 0)을 생성한 후

거기서 versionName만 가져오면 된다.

public abstract PackageInfo getPackageInfo(String packageName, @PackageInfoFlags int flags)
            throws NameNotFoundException;

getPackageInfo를 가보면 exception이 발생되면 바로 죽여버리기 때문에 아무래도 앱이 죽지는 않게끔 try~catch처리는 해줘야 할 것 같다.

fun getVersion(context : Context): String? {
     var versionName = ""
     try {
          val pm = context.packageManager.getPackageInfo(context.packageName, 0)
          versionName = pm.versionName
     } catch (e : Exception) {
           // Exception
     }
     return versionName
}

NameNotFoundException이라고 위에 명시되어 있지만.. 그냥 Exception으로 묶어버리자.

 

ps.flags값은 뭔지 잘 모르겠음..

반응형
복사했습니다!