티스토리 뷰
안녕하세요.
아 정말 요즘은 정신이 하나도 없습니다.
이것저것 정리도 해야하고 개발도 해야하고... ㅠ
하지만 그래도 SI처럼 남의 일 하는것이 아니라서 괜찮기는 합니다.
자... 그래서 오늘은 제가 주로 하는 iOS가 아닌 Android 이야기를 하려고 합니다.
별건 아닙니다만 빌드할 경우에 VersionCode와 VersionName을 자동으로 올려주어서 빌드하는 방법에 대해서 알아보도록 합니다.
자동이기 때문에 원하지 않는 방향으로 될수도 있으니 이점은 참고 바랍니다.
자... 일단 VersionCode와 VersionName에 대해서 이야기를 해봅시다.
VersionCode : 사용자가 알필요는 없는 앱의 버저닝 번호. 1~2147483647 이렇게 사용이 가능하며, 앱스토어에 업데이트를 할 경우에 이전의 코드보다 1이상이 증가하는 번호를 부여야하여 합니다.
VersionName : 사용자가 보는 버전입니다. 1.0.1 뭐 이런식이 되겠죠. 이건 사용자가 보는 부분이기 때문에 앱이 버전이 올라가도 이건 안 올려도 상관은 없습니다. 표기만 해주는것이니까요.
우리는 이 사용자가 보는 VersionName에 이러한 형태를 추구합니다. <major>.<minor>.<patch> 그렇죠? 아닐수도 있고요... 이건 뭐... 갑이 거의 마음대로 하니깐... 쩝..
그래서 거의 버전을 올리게 되면 patch를 하나씩 올리는 경향이 있죠.
왜냐면 minor는 약간 중요하게 수정이 된것들이고. major는 중요한 기능을 수정한것이니까요.
뭐 그래서 이것저것 저도 찾아보고 하다보니까 귀찮게 빌드해줄때마다 버저닝을 하는것이 귀찮았습니다.
그래서 자동으로 되는 방법을 찾아보았고 다음과 같을수 있을것 같네요!
1. 일단 script파일이 존재하는 폴더 안에 version.properties 파일을 만들어줍니다.
1 2 3 | #Mon Feb 19 23:12:55 KST 2018 CODE=16 PATCH=12 | cs |
2. build.gradle 파일을 수정합니다. 저는 app의 gradle 파일을 수정하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | android { ... ext.isBuild = { def runTasks = gradle.startParameter.taskNames return ('build' in runTasks) } def major = 1 def minor = 0 def patch = 9 def code = 13 if (isBuild()) { def versionFile = file('version.properties') def properties = new Properties() if (versionFile.canRead()) { properties.load(new FileInputStream(versionFile)) patch = properties['PATCH'].toInteger() + 1 code = properties['CODE'].toInteger() + 1 } properties['PATCH'] = patch.toString() properties['CODE'] = code.toString() properties.store(versionFile.newWriter(), null) } applicationVariants.all { variant -> variant.outputs.all { output -> if (isBuild()) { def dateTimeFormat = new Date().format('yyMMdd_HHmmss') def serverName = variant.buildType.name == 'release' ? 'Real' : 'Test' def version = "${variant.versionName}(${variant.versionCode})" def outputName = "${projectName}${version}_${serverName}_${dateTimeFormat}.apk" outputFileName = new File("", outputName) } } } } | cs |
이렇게 해주면, version.properties 파일이 존재하지 않을 경우에는 default값으로 넣어준 major.minor.patch 로 버전이 빌드가 되게 되고요. 파일이 존재할 경우에는 versionCode와 patch가 하나씩 증가하는 빌드 파일을 보실수 있게 됩니다.
참고로 제가 위쪽에 비교를 하였던 tasks에 build는 저는 build를 할 경우에 test, real server를 한번에 할수 있도록 gradle build를 이용하여서 빌드를 합니다.
하는 방법이 궁금하신 분은 문의 주시기 바랍니다.
즐거운 프로그래밍 되세요.
'Mobile > Android' 카테고리의 다른 글
Android WebView control 하기 (1/3) - WebViewClient (0) | 2018.02.26 |
---|---|
kotlin optional unwrapping (0) | 2018.02.19 |
proguard 설정에서 패키지 아래 파일들 다 keep 하기 (0) | 2018.01.28 |
gradle 설정하여주어 서로 다른 서버 apk 만들기. aka test, real (0) | 2018.01.28 |
adb를 이용하여 화면 캡쳐하기 (0) | 2018.01.12 |
- Total
- Today
- Yesterday
- windows10
- CentOS
- ios
- android
- ubuntu
- Spring
- centos8
- tomcat
- war
- Java
- go
- rxswift
- Windows
- Python
- github
- Linux
- enum
- nodejs
- intellij
- php
- docker
- golang
- Codable
- SWIFT
- Gradle
- cocoapods
- MySQL
- git
- Kotlin
- Xcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |