투케이2K

573. (Android/안드로이드) 빌드 그래들 파일에서 자동 빌드 버전 값 증가 설정 - build gradle Auto versionCode , versionName 본문

Android

573. (Android/안드로이드) 빌드 그래들 파일에서 자동 빌드 버전 값 증가 설정 - build gradle Auto versionCode , versionName

투케이2K 2023. 6. 13. 03:28

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[그림 설명]

 

[소스 코드 : build.gradle 파일]

plugins {
    id 'com.android.application'
}

android {
    namespace 'com.example.jniproject'
    compileSdk 33

    // TODO [저장된 버전 값을 불러오기]
    def versionPropsFile = file('version.properties')
    def AUTO_VERSION_CODE
    def AUTO_VERSION_NAME
    if (versionPropsFile.canRead()) {
        def versionProps = new Properties()
        versionProps.load(new FileInputStream(versionPropsFile))
        AUTO_VERSION_CODE = versionProps['AUTO_VERSION_CODE'].toInteger()
        AUTO_VERSION_NAME = versionProps['AUTO_VERSION_NAME'].toString()
    } else {
        throw new FileNotFoundException("Could not read version.properties!")
    }


    // TODO [읽어온 빌드 버전 값 자동 증가시키는 부분]
    ext.autoIncrementBuildNumber = {
        if (versionPropsFile.canRead()) {
            def versionProps = new Properties()
            versionProps.load(new FileInputStream(versionPropsFile))

            AUTO_VERSION_CODE = versionProps['AUTO_VERSION_CODE'].toInteger() + 1 // [버전 코드 자동 1 값 증가]
            versionProps['AUTO_VERSION_CODE'] = AUTO_VERSION_CODE.toString()

            AUTO_VERSION_NAME = versionProps['AUTO_VERSION_NAME'].toString() + " (" + AUTO_VERSION_CODE + ")" // [버전 네임 (버전 코드)]
            versionProps['AUTO_VERSION_NAME'] = AUTO_VERSION_NAME.toString()

            versionProps.store(versionPropsFile.newWriter(), null)
        } else {
            throw new FileNotFoundException("Could not read version.properties!")
        }
    }


    // TODO [읽어온 빌드 버전 값 자동 증가 함수 실행]
    gradle.taskGraph.whenReady { taskGraph ->
        if (taskGraph.hasTask(assembleDebug)) {
            autoIncrementBuildNumber()
        } else if (taskGraph.hasTask(assembleRelease)) {
            autoIncrementBuildNumber()
        }
    }

    
    // TODO [앱 빌드 값에 변수값 지정]
    defaultConfig {
        applicationId "com.example.jniproject"
        minSdk 21
        targetSdk 33
        versionCode AUTO_VERSION_CODE
        versionName AUTO_VERSION_NAME

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    
    // TODO [자동 빌드 설정 수행]
    buildTypes {

        release { // [배포 모드]
            minifyEnabled false // [true 프로가드 사용 / false 프로가드 사용안함]
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

            // [apk 및 aab 생성 시 파일 명칭 자동 설정]
            applicationVariants.all { variant ->
                variant.outputs.all {
                    def date = new Date();
                    def formattedDate = date.format('yyyyMMddHHmmss')

                    outputFileName = "app-release-" + formattedDate + ".apk"
                }
            }

        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildFeatures {
        viewBinding true
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.6.0'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.navigation:navigation-fragment:2.5.3'
    implementation 'androidx.navigation:navigation-ui:2.5.3'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'


    // -----------------------------------------------------------------------------------------
    // TODO [메인 build.gradle 에 모듈 추가 실시]
    implementation project(':nativelib')
    // -----------------------------------------------------------------------------------------

}
 

[소스 코드 : java 파일]

        try {

            PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);

            Log.w(tag, "자동 증가 빌드 버전 코드 확인 :: " + String.valueOf(packageInfo.versionCode));
            Log.w(tag, "자동 설정 빌드 버전 네임 확인 :: " + String.valueOf(packageInfo.versionName));

        }
        catch (Exception e){
            e.printStackTrace();
        }
 

[결과 출력]


 
반응형
Comments