Gradle 개념 정리
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가 설치된 경로만 적혀 되어 있다.
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
: 외부 라이브러리를 설정한다.