본문 바로가기

Programming/Android

2. 안드로이드 기본 구조의 이해 (5) - gradle(그레이들) [1/2]

android studio logo image

 

 

 

 

 

안드로이드 앱 개발을 완료하거나 빌드 테스트를 진행할 때, 이를 위해서는 앱의 리소스 / 자바 코드를 컴파일하는 동시에 준비한 키로 서명을 해서 배포용 파일을 추출하게 됩니다. 이 일련의 과정은 안드로이드 빌드 도구의 일종인 gradle(그레이들)을 통해서 진행하게 됩니다. 

 

이 gradle과 관련된 설정은 [build.gradle]에서 진행할 수 있습니다. 이 gradle 파일은 안드로이드 스튜디오 프로젝트 파일들 중 Gradle Scripts 영역에서 확인이 가능합니다. 

 

 

 

 

상단의 두 개의 파일을 보면 알 수 있듯이, build.gradle 파일을 프로젝트 레벨과 모듈(앱) 레벨이 각각 존재합니다. 프로젝트와 모듈 단위로 구분되는 안드로이드 개발 체계를 이해하고 있다면 크게 어렵지 않을 내용입니다. 그럼 각각의 파일들에 대해서 하나씩 살펴보도록 하겠습니다. 

 

 

 


 

 

 

○ settings.gradle

 

이 파일은 프로젝트 레벨의 세팅 파일입니다. 실제로 직접 건드릴 일은 없지만, 특정 프로젝트에서 모듈을 추가하게 되면 자동으로 해당 모듈이 이 파일의 설정에 포함됩니다. 즉, 그레이들이 모듈을 관리하고 빌드하도록 만드는 설정 파일인 것입니다. 

 

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}
rootProject.name = "AndroidLab"
include ':app'

 

 

앞서서 예제로 만든 모듈의 이름이 AndroidLab이었는데, 해당 모듈 명이 추가된 것을 확인할 수 있습니다. 실제로 이 파일을 직접 손대는 일은 없다고 봐도 무방합니다.

 

 

 

○ 프로젝트 수준의 gradle

 

아래 내용은 프로젝트 수준의 그레이들 파일입니다. 이는 Gradle Scripts 영역 최상위에 있으며, 프로젝트 명이 함께 표시되죠. 이는 모든 모듈을 위한 최상위 설정을 하게 됩니다. 다만, 실제로 해당 그레이들을 수정하기보다는 모듈 레벨에서 우리가 익히 아는 설정을 진행하게 됩니다. 간혹 dependencies 영역에 라이브러리를 추가하는 경우도 있으니 참고하시면 됩니다. 

 

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.2"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

 

 

모듈 수준의 gradle은 다소 내용이 많으므로, 다음 아티클에서 이어서 살펴보겠습니다.