일반적인 규칙은 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"
}
}