본문 바로가기
개발(Development)/Android(안드로이드)

[안드로이드] 그레이들 Gradle Scripts에 대한 정리

by 카레유 2021. 7. 10.

# Gradle Scripts란?

안드로이드 프로젝트를 생성하면 Gradle Scripts 라는 영역에 build.gradle, settings.gradle 등의 파일이 자동으로 만들어진다.

이 파일들을 통해 안드로이드 프로젝트의 빌드 정보, 라이브러리 등을 관리한다.

 


보통 빌드 및 라이브러리 관련 설정이 관리되는 정도로만 확인하고 넘어가는데

사실상 개발하면서 건드릴 일은 거의 없지만, 정리 차원에서 조금 더 상세하게 기록한다.

 

안드로이드 프로젝트 구조에 대해서는 아래 글 참고

[안드로이드] 앱 프로젝트 구조


# Gradle Scripts 의 구조

Gradle Scripts는 아래 그림과 같이 총 7개의 파일로 구성되어 있다.(버전에 따라 다소 상이할 수 있다.)

 

 

1. build.gradle (Project: 프로젝트명)

: 프로젝트 수준의 그레이들 설정 파일

* 이 파일에 대해서는 아래에서 좀더 상세하게 살펴보겠다.

 

 

2. build.gradle (Module: 프로젝트명.app)

: 모듈 수준의 그레이들 설정 파일

: 모듈의 종류는 app모듈, 웨어러블 모듈, 안드로이드TV 모듈 등이 있다.

: 보통 phone&tablet 프로젝트를 생성하기 때문에, 기본으로 app 모듈 수준의 빌드설정/라이브러리 정보가 저장된다.

* 이 파일에 대해서는 아래에서 좀더 상세하게 살펴보겠다.

 

 

3. gradle-wrapper.properties (Gradle Version)

: 그레이들 자체와 관련된 설정 파일

 

 

4. proguard-rules.pro (ProGuard Rules for 프로젝트명.app)

: 코드 난독화 도구(ProGuard) 설정 파일

: 코드 난독화 시 추가할 규칙이 있다면 이 파일에 기술해주면 된다.

 

 

5. gradle.properties (Project Properties)

: 프로젝트 수준의 그레이들 환경 설정 파일

 

 

6. settings.gradle (Project Settings)

: 프로젝트에 포함된 모듈을 등록/관리하는 파일

: Phone&Tablet 으로 프로젝트를 생성한 경우, 아래처럼 'app'모듈만 기본으로 등록 되어 있다.

: 웨어러블 모듈이나 안드로이드TV모듈을 추가하면 여기에 등록된다.

 

 

7. local.properties (SDK Location)

: 안드로이드 SDK 경로를 관리하는 파일

: 열어보면 그냥 안드로이드SDK가 설치된 경로만 적혀 되어 있다.


build.gradle 파일 2개에 대해서 좀더 자세히 살펴보자.

 

1.  build.gradle (Project: 프로젝트명)

: 프로젝트 수준의 그래이들 설정 파일이다.

 

// 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:4.2.2"

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

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}

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

 

1) buildscript

- respositories : 외부 저장소 설정. google()이 기본으로 설정된다.

- dependencies(의존성:라이브러리): gradle 플러그인 버전 설정

 

2) allprojects

- respositories : 위의 buildscript > respositories와 동일한 외부저장소가 설정된다.

 

3) task 

: 프로젝트 전체적으로 공통으로 사용할 작업을 정의한다.

- clean(type: Delete): 기본으로 추가된 공통작업으로, 빌드시 생성되는 build디렉터리들을 삭제한다.

 

 

2. build.gradle (Module: 프로젝트명.app)

: 모듈 수준의 그레이들 설정 파일로, 각 모듈마다 생성된다.

* 각 부분에 대한 상세내용은 주석으로 추가

 

// 안드로이드 개발 플러그인 설정
plugins { 
    id 'com.android.application'
}


// 컴파일/빌드/버전 설정
android {
    compileSdkVersion 30 // 컴파일 SDK 버전(컴파일러 버전)

    defaultConfig {
        applicationId "com.example.projectstudy_java" // 패키지명(앱 식별자)
        minSdkVersion 19 // 최소 SDK 버전(최소 지원 범위)
        targetSdkVersion 30 // 타겟 SDK 버전(개발시 이용하고 있는 라이브러리 버전)
        versionCode 1 // 버전 코드(앱의 버전 정보)
        versionName "1.0" // 사용자에게 노출되는 버전

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    
    // 빌드 설정
    buildTypes {
        release {
            minifyEnabled false // 빌드시 코드 난독화 설정(true: realease빌드시에만 코드 난독화)
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    
    // 컴파일 설정
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

// 외부 라이브러리 설정
dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

 

1) plugins

: 안드로이드 개발을 위한 플러그인 설정 영역으로, 'com.android.application'이 기본으로 지정된다.

 

2) android

: 컴파일/빌드, 버전정보, 난독여부 등을 설정한다.

: 원래 버전정보 등은 manifest.xml에 설정했으나, 지금은 모듈 수준의 build.gradle 파일에 작성한다.

- compileSdkVersion: 컴파일 SDK버전 설정

- defaultConfig: 각종 버전 정보 설정

- buildTypes: 빌드 설정

- compileOptions: 컴파일 설정

 

3) dependencies

: 외부 라이브러리를 설정한다.


안드로이드 스튜디오에서 대부준 자동으로 관리해주기 때문에

사실상 개발자가 크게 건드릴 영역은 없지만, 알아두면 문제 발생시 좀더 대처하기 쉬울 것이다.

 

 

 

 

댓글