# 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
: 외부 라이브러리를 설정한다.
안드로이드 스튜디오에서 대부준 자동으로 관리해주기 때문에
사실상 개발자가 크게 건드릴 영역은 없지만, 알아두면 문제 발생시 좀더 대처하기 쉬울 것이다.
'개발(Development) > Android(안드로이드)' 카테고리의 다른 글
[안드로이드] R.java / R.jar 개념 및 위치: 리소스 식별 변수 관리 원리 (0) | 2021.07.11 |
---|---|
[안드로이드] 매니페스트(AndroidMainfest.xml) 개념과 구조 (0) | 2021.07.11 |
[안드로이드] 앱 프로젝트 구조 (0) | 2021.07.10 |
[안드로이드] 앱 프로젝트 템플릿 (액티비티 UI) 종류 (0) | 2021.07.10 |
[안드로이드] 앱 개발 프로젝트 생성 방법 (0) | 2021.07.10 |
댓글