Notice
Recent Posts
Recent Comments
Link
투케이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();
}
[결과 출력]
반응형
'Android' 카테고리의 다른 글
Comments