개요
Android는 eclipse, ant, android studio 등에서 빌드 할 수 있다.
현재 android studio는 가장 일반적으로 사용되고 있는 빌드 환경이다.
Android Studio는 Gradle을 기반으로 빌드를 한다.
Android Studio에서는 Android를 위해 기능이 추가된, Android Gradle Plugin이라는 라이브러리를 사용한다.
Gradle 버전
Android Gradle Plugin은 Gradle에 의존성을 가지기 때문에, 서로 호환되는 버전을 사용해야 한다.
호환되지 않는 버전을 사용하려는 경우, 에러가 발생한다.
표 작성 : 2020년 1월 29일
Android Gradle Plugin Version | Required Gradle Version |
1.00 ~ 1.1.3 | 2.2.1 ~ 2.3 |
1.2.0 - 1.3.1 | 2.2.1 ~ 2.9 |
1.5.0 | 2.2.1 ~ 2.1.3 |
2.0.0 ~ 2.1.2 | 2.10 ~ 2.13 |
2.1.3 ~ 2.2.3 | 2.14.1+ |
2.3.0+ | 3.3+ |
3.0.0+ | 4.1+ |
3.1.0+ | 4.4+ |
3.2.0 ~ 3.2.1 | 4.6+ |
3.3.0 ~ 3.3.2 | 4.10.1+ |
3.4.0 ~ 3.4.1 | 5.1.1+ |
3.5.0+ | 5.4.1 ~ 5.6.4 |
버전 확인
- Gradle Version은 gradle-wrapper.properties 파일에 distributionUrl에 정의되어 있다.
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
- Android Gradle Plugin은 Project 수준의 build.gradle의 dependencies에 정의되어 있다.
dependencies {
...
classpath 'com.android.tools.build:gradle:3.5.1'
}
고려사항
- 많은 경우 결과물을 특정 폴더에 이동시키는 gradle을 작성할 것이다. (혹은 bintray나 nexus에 업로드하는 경우)
- gradle 버전에 따라, 아래 스크립트 조건이 변경되어, 수정해야 하는 경우가 발생한다.
앱의 경우
android.applicationVariants.all { variant ->
variant.assembleProvider.configure { assemble ->
assemble.doLast {
variant.outputs.each { output ->
def archiveFileName = "${archivesBaseName}-${variant.flavorName}-${variant.buildType.name}-${variant.versionName}.apk"
def outputFile = output.outputFile
archiveFileName = archiveFileName.replace("-release", "")
copy {
from outputFile
rename outputFile.name, archiveFileName
into project.ext.archivesDir + "/${variant.buildType.name}/" + project.ext.archivesName
}
}
}
}
}
라이브러리의 경우
android {
libraryVariants.all { variant ->
variant.assembleProvider.configure { assemble ->
assemble.doLast {
variant.outputs.each { output ->
def archiveFileName = "${archivesBaseName}-${variant.buildType.name}-${defaultConfig.versionName}.aar"
def outputFile = output.outputFile
archiveFileName = archiveFileName.replace("-release", "")
copy {
from outputFile
rename outputFile.name, archiveFileName
into project.ext.archivesDir + "/${variant.buildType.name}/" + project.ext.archivesName
}
}
}
}
}
}
버전 관리
- 항상 최신 버전을 유지하는 것이 프로젝트 관리에 좋다.
참고
'프로그래밍 > Gradle' 카테고리의 다른 글
[Gradle] Unity Android 빌드를 위한 Gradle Version 관리 (0) | 2020.01.29 |
---|---|
[Gradle] 최신 버전 링크 (0) | 2019.07.03 |