Android : 프로젝트 버전, 빌드 넘버

hjseo-dev·2022년 3월 4일
0

Android

목록 보기
8/18

버전 넘버

일반적인 규칙은 1.0.0으로 세자리로 결정함

  • 첫째자리 : 뒤로 되돌릴수 없는 수준의 큰 변경이 있을때
  • 둘째자리 : 여러가지 새 기능 추가 시
  • 셋째자리 : 자잘한 버그 픽스

빌드 넘버

: 어떤 버전을 출시 하기 위해 반복한 빌드의 횟수 기록
빌드 수행 시 마다 변화해야 한다.

프로젝트의 버전넘버와 빌드넘버를 자동으로 업데이트 시켜주는 코드 만들기

android {
    defaultConfig {
        versionCode 1
        versionName "1.0"
    }
}

여기서 버전 코드와 빌드 넘버를 알 수 있음
version.properties 파일에 저장시킨다.

VERSION_NUMBER='1.0.0'
VERSION_BUILD=1

마지막으로 읽어온 후에 자동으로 업데이트 하는 코드를 추가한다.

android {
    // 저장된 값을 불러오는 부분
    def versionPropsFile = file('version.properties')
    def versionBuild
    def versionNumber
    if (versionPropsFile.canRead()) {
        def versionProps = new Properties()
        versionProps.load(new FileInputStream(versionPropsFile))
        versionBuild = versionProps['VERSION_BUILD'].toInteger()
        versionNumber = versionProps['VERSION_NUMBER'].toString()
    } else {
        throw new FileNotFoundException("Could not read version.properties!")
    }
    
    // 읽어온 빌드넘버를 증가시키는 부분
    ext.autoIncrementBuildNumber = {
        if (versionPropsFile.canRead()) {
            def versionProps = new Properties()
            versionProps.load(new FileInputStream(versionPropsFile))
            versionBuild = versionProps['VERSION_BUILD'].toInteger() + 1
            versionProps['VERSION_BUILD'] = versionBuild.toString()
            versionProps.store(versionPropsFile.newWriter(), null)
        } else {
            throw new FileNotFoundException("Could not read version.properties!")
        }
    }
    
    // 함수를 실행시키는 부분
    gradle.taskGraph.whenReady { taskGraph ->
        if (taskGraph.hasTask(assembleDebug)) {
            autoIncrementBuildNumber()
        } else if (taskGraph.hasTask(assembleRelease)) {
            autoIncrementBuildNumber()
        }
    }

    compileSdkVersion 29

    // 수정한 내용을 앱에 반영해 줌
    defaultConfig {
        applicationId "com.example.autobuildnum"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode versionBuild
        versionName versionNumber

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
}

+ 참고자료 링크

0개의 댓글