반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

멋진 개발자가 되고 싶다

[Android] build.gradle이란 무엇일까 본문

Android

[Android] build.gradle이란 무엇일까

오패산개구리 2021. 7. 6. 12:29
728x90
반응형

Gradle은 빌드, 테스트, 배치 등을 자동화하는 데 사용되는 빌드 시스템(open source)입니다.

"Build.gradle"은 작업을 자동화할 수 있는 스크립트입니다.

예를 들어, 실제 빌드 프로세스가 발생하기 전에 Gradle 빌드 스크립트를 통해

디렉터리 간에 일부 파일을 복사하는 간단한 태스크를 수행할 수 있습니다.

 

 

Gradle이 필요한 이유?

모든 Android 프로젝트에는 프로젝트의 .java 및 .xml 파일에서 애플리케이션을 생성하기 위한 Gradle이 필요합니다.

간단히 말해, Gradle은 모든 소스 파일(Java 및 XML)을 가져와서 적절한 도구를 적용합니다.

예를 들어, Java 파일을 dex 파일로 변환하고 apk라고 하는 단일 파일로 압축합니다.

build.gradle 스크립트에는 두 가지 유형이 있습니다.

 

* Top-level build.gradle

     * Module-level build.gradle

 

 

 

Top-level build.gradle

 

루트 프로젝트 디렉터리에 위치하며

프로젝트의 주요 기능은 프로젝트의 모든 모듈에 적용될 빌드 구성을 정의하는 것입니다.

다음과 같이 구현됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
// Top-level build file where you can add configuration
// options common to all sub-projects/modules.
  
buildscript
{
  
    repositories
    {
        google()
            jcenter()
    }
    dependencies
    {
        classpath 'com.android.tools.build:gradle:3.0.1'
  
        // Do not place the application dependencies here; 
        // they belong to individual module build.gradle files
    }
}
  
allprojects
{
    repositories
    {
        google()
            jcenter()
    }
}
  
task clean(type
           : Delete)
{
    delete rootProject.buildDir
}
cs

 

 

Top-level build.gradle은 다음과 같은 다양한 빌드 구성을 지원합니다.

(1) buildscript : 이 블록은 Gradle의 저장소 및 종속성을 구성하는 데 사용됩니다.

   - dependencies : 빌드 스크립트의 이 블록은 Gradle이 프로젝트 중에 빌드해야 하는 dependency를 구성하는 데 사용됩니다.

[주의: 여기에는 종속성을 포함하지 마십시오. (이 종속성은 module-level build.gradle에 포함됩니다.)]

 

(2) allprojects : 타사 플러그인 또는 라이브러리를 구성할 수 있는 블록입니다. 새로 생성된 프로젝트의 경우 Android 스튜디오에는 기본적으로 JCenter와 Google의 maven 저장소가 포함되어 있습니다.

 

(3) 태스크 정리(유형:삭제): 이 블록은 프로젝트가 실행될 때마다 디렉터리를 삭제하는 데 사용됩니다. 이렇게 하면 settings.gradle과 같은 전체 정리가 필요한 일부 구성 파일을 수정할 때 프로젝트가 깨끗하게 유지됩니다.

 

 

 

 

Module-level build.gradle

 

프로젝트의 project/module directory에 있는 Gradle script는 모든 종속성이 정의되고 sdk 버전이 선언되는 곳입니다.

이 스크립트에는 main/app manifest 또는 Top-level build.gradle 파일의 추가 빌드 유형 및

재정의 설정을 포함하는 많은 기능이 있습니다.

다음과 같이 구현됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// The first line in this file indicates
// the Android plugin is applied for Gradle to
// this build
 
apply plugin : 'com.android.application'
 
android
{
    compileSdkVersion 26 defaultConfig
    {
        applicationId "example.mehakmeet.geeksforgeeks"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }
    buildTypes
    {
        release
        {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
 
dependencies
{
    implementation fileTree(include
                            : [ '*.jar' ], dir
                            : 'libs')
        implementation 'com.android.support:appcompat-v7:26.1.0'
}
 
cs

 

 

module-level build.gradle은 다음과 같은 다양한 빌드 구성을 지원합니다.

(1) android : 이 블록은 특정 Android 빌드 옵션을 구성하는 데 사용됩니다.
   - complieSdkVersion – 앱의 API 레벨을 정의하는 데 사용되며, 이 레벨과 하위 레벨의 기능을 사용할 수 있습니다.

 

(2) defaultConfig:
   - applicationId – 앱 게시를 위한 고유 ID를 식별하는 데 사용됩니다.
   - minSdkVersion – 애플리케이션을 실행하는 데 필요한 최소 API 레벨을 정의합니다.
   - targetSdkVersion – 앱을 테스트하는 데 사용되는 API 레벨을 정의합니다.
   - versionCode – 앱의 버전 코드를 정의합니다. 앱 업데이트가 필요할 때마다 버전 코드를 1개 이상 늘려야 합니다.
   - versionName – 앱의 버전 이름을 정의합니다. 업데이트를 생성하는 동안 이 값이 얼마든지 증가할 수 있습니다.

 

(3) buildtypes(release):
   - minifyEnabled – 그러면 릴리스 빌드에 대한 코드 축소가 활성화됩니다.
   - proguardFiles – proguard 설정 파일을 지정합니다.

 

(4) dependencies – 프로젝트를 구축하는 데 필요한 dependencies를 지정합니다.
Top-level 및 module-level build.gradle 파일은 모두 Android 프로젝트의 작업을 자동화하기 위한 main 스크립트 파일이며 Gradle에서 소스 파일로부터 APK를 생성하는 데 사용합니다.

 

 

 

[출처 : https://www.geeksforgeeks.org/android-build-gradle/]

728x90
반응형