5.8 KiB
5.8 KiB
Android 프로젝트
Gradle은 Android 프로젝트의 빌드 시스템으로 널리 사용된다. 빌드 자동화, 의존성 관리, 다중 빌드 변형(SDK 버전, 제품별 빌드 등) 지원 등의 기능을 제공하여 Android 개발을 더욱 효율적으로 만든다.
Android 프로젝트에서 Gradle은 다음과 같은 장점을 제공한다.
- 자동화된 빌드 시스템 → 코드 컴파일, 리소스 처리, APK 생성까지 자동 수행
- 유연한 빌드 구성 → 빌드 변형(Variants), 제품 플래버(Flavors) 등을 손쉽게 설정 가능
- 강력한 의존성 관리 → 라이브러리를 원격 저장소에서 손쉽게 가져와 사용할 수 있음
- 테스트 및 CI/CD 연계 용이 → 테스트 자동화 및 배포 프로세스 통합 가능
| 명령어 | 설명 |
|---|---|
gradle assembleDebug |
디버그 빌드 생성 |
gradle assembleRelease |
릴리스 빌드 생성 |
gradle clean |
빌드 결과물 삭제 |
gradle dependencies |
프로젝트 의존성 확인 |
gradle lint |
코드 품질 검사 실행 |
gradle test |
테스트 실행 |
gradle bundleRelease |
AAB(Android App Bundle) 빌드 |
Android 프로젝트에서 Gradle 구조
Android 프로젝트에서 주요 Gradle 파일은 다음과 같다.
프로젝트 루트 디렉터리 (/) :
settings.gradle.kts→ 서브 프로젝트 포함 여부 설정build.gradle.kts→ 프로젝트 전반의 설정 및 플러그인 관리
모듈(app/ 또는 library/) :
app/build.gradle.kts→ 애플리케이션 모듈의 빌드 설정library/build.gradle.kts→ 라이브러리 모듈의 빌드 설정
주요 Gradle 파일 설정
settings.gradle.kts (루트 프로젝트)
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyAndroidApp"
include(":app")
repositories→ Gradle이 사용할 라이브러리 저장소 설정rootProject.name→ 프로젝트 이름 지정include(":app")→app모듈 포함
build.gradle.kts (루트 프로젝트)
buildscript {
dependencies {
classpath("com.android.tools.build:gradle:8.2.0")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.10")
}
}
- Android Gradle 플러그인 및 Kotlin 플러그인 추가
app/build.gradle.kts (모듈 설정)
plugins {
id("com.android.application")
kotlin("android")
}
android {
namespace = "com.example.myandroidapp"
compileSdk = 34
defaultConfig {
applicationId = "com.example.myandroidapp"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
debug {
isMinifyEnabled = false
}
}
}
dependencies {
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.10.0")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
plugins → Android 애플리케이션 플러그인 및 Kotlin 플러그인 적용
androidcompileSdk→ 앱이 빌드될 Android SDK 버전minSdk→ 최소 지원 Android 버전targetSdk→ 테스트 및 최적화 대상 버전versionCode,versionName→ 앱의 버전 정보
buildTypesrelease→ 최적화 및 난독화(Proguard) 적용debug→ 개발 및 테스트용 빌드
dependencies→ 프로젝트에서 사용할 라이브러리 설정
의존성 관리
라이브러리 추가
Gradle을 사용하면 dependencies 블록에서 필요한 라이브러리를 쉽게 추가할 수 있다.
dependencies {
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
}
implementation→ 애플리케이션 실행 시 필요한 라이브러리
버전 관리 (gradle/libs.versions.toml 활용)
Android 프로젝트에서는 libs.versions.toml 파일을 사용하여 라이브러리 버전을 중앙에서 관리할 수 있다.
gradle/libs.versions.toml
[versions]
core-ktx = "1.12.0"
appcompat = "1.6.1"
[libraries]
core-ktx = { module = "androidx.core:core-ktx", version.ref = "core-ktx" }
appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
build.gradle.kts에서 참조
dependencies {
implementation(libs.core.ktx)
implementation(libs.appcompat)
}
빌드 변형(Build Variants) 활용
Gradle을 사용하면 개발, 스테이징, 프로덕션 등의 환경에 따라 빌드를 분리할 수 있다.
예제: flavorDimensions와 productFlavors 활용
android {
flavorDimensions += "version"
productFlavors {
create("free") {
dimension = "version"
applicationIdSuffix = ".free"
versionNameSuffix = "-free"
}
create("pro") {
dimension = "version"
applicationIdSuffix = ".pro"
versionNameSuffix = "-pro"
}
}
}
빌드 실행 방법 :
gradle assembleFreeDebug
gradle assembleProRelease