소개
gradle은 Groovy 또는 Kotlin을 사용하여 다양한 플랫폼 개발의 자동화를 돕는 스크립트 도구입니다. 저는 네이티브 안드로이드 앱 개발과 React-Native 앱 개발을 하는 과정에서 gradle 스크립트를 활용하고 있습니다. 이 글에서는 안드로이드 앱 개발 시 활용하는 gradle 을 설명하겠습니다.
android 앱 개발에서의 gradle
안드로이드 생태계에선 어플리케이션을 개발하기 위해 적극적으로 gradle을 활용합니다. 아래 스크린샷은 한 프로젝트에 일반적으로 포함되는 gradle 파일들입니다.
settings.gradle
- 프로젝트의 root 디렉토리에 위치하며 프로젝트 단위의 설정 파일
- 하나의 프로젝트에는 하나가 아닌 여러 개의 모듈이 있을 수 있음
- 아래와 같이 android, auto 와 같은 여러 개의 모듈이 한 프로젝트에 있는 경우 dependencyResolutionManagement 블록 하단에 이를 명시해야 함
...
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "nowinandroid"
include(":app")
include(":app:android")
include(":app:auto")
include(":feature:home")
include(":feature:reviews")
include(":feature:players")
include(":data:books")
include(":data:reviews")
...
build.gradle (Project)
- 프로젝트의 root 디렉토리에 위치하며 프로젝트 단위의 설정 파일
- 프로젝트의 모든 모듈에 공통적으로 사용되는 플러그인들을 명시
- 각 모듈 플러그인 명시에 대한 코드의 단순화 장점
...
// Lists all plugins used throughout the project without applying them.
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.firebase.crashlytics) apply false
alias(libs.plugins.firebase.perf) apply false
alias(libs.plugins.gms) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.secrets) apply false
}
build.gradle (Module)
- 각 모듈의 gradle 스크립트
- 해당 모듈에 필요한 의존성 항목 및 플러그인 관리
- 안드로이드 프로젝트를 처음 생성할 때 존재하는 모듈은 :app 으로 하나
- 플러그인과 의존성 항목에 대한 글 참고
...
plugins {
id("nowinandroid.android.feature")
id("nowinandroid.android.library.compose")
id("nowinandroid.android.library.jacoco")
}
android {
namespace = "com.google.samples.apps.nowinandroid.feature.search"
}
dependencies {
implementation(project(":feature:bookmarks"))
implementation(project(":feature:foryou"))
implementation(project(":feature:interests"))
implementation(libs.kotlinx.datetime)
}
...
아래는 exampleModule 이라는 모듈을 안드로이드 프로젝트에 추가한 모습의 구조, exampleModule의 build.gradle 이 추가된 것을 확인할 수 있습니다.
gradle.properties & local.properties
- 순서대로 gradle 스크립트 작업 옵션(데몬 힙 사이즈 등), 로컬 환경 정보(SDK 디렉토리 위치) 값 저장
gradle-wrapper.properties
- gradle 스크립트가 특정 작업 환경에 제약받지 않도록 도와주는 파일
- 해당 프로젝트에 사용할 gradle 버전을 명시
proguard-rules.pro (Module)
각 모듈의 축소, 난독화 설정을 담당하는 파일. 이 코드를 예제로 참고
출처
'프로그래밍 > 안드로이드 <Kotlin>' 카테고리의 다른 글
[Kotlin] 알고리즘 풀이를 위한 코틀린 코드 템플릿 (0) | 2023.08.23 |
---|---|
[Kotlin] 코틀린 제네릭(Generics)의 기본 (0) | 2023.07.05 |
[Kotlin] 코틀린 Array 자료형 (0) | 2023.05.28 |
[Kotlin] 코틀린 Nullability (0) | 2023.04.16 |
[android] 업로드 키, 인증서 재설정하기 (0) | 2023.02.27 |