작성한 소스 코드와 의존성 라이브러리를 묶어서 APK 등 배포할 수 있는 형태로 패키징 해주는 빌드 배포 도구(build toolKit) 입니다.
.gradle 파일은 JVM 동적 언어인 Groovy DSL(Domain Specific Language)을 사용해야합니다.
프로젝트를 생성하면, Gradle 파일들도 같이 생성되는 것을 볼 수 있습니다.
안드로이드 스튜디오는 코드의 편집만 할 수 있는 IDE(통합 개발 환경) 로,
별도의 빌드 배포 도구가 필요하기 때문에 채택한 빌드 배포 도구가 Gradle 입니다.
( 이외에 Ant, Maven 등이 있습니다 )
따라 안드로이드 스튜디오(IDE)와 빌드 시스템이 서로 독립적으로 실행된다는 것을 알 수 있습니다
안드로이드 스튜디오는 코드의 편집만을 담당하고,
빌드하여 패키징하는 과정은 모두 이 Gradle이 담당합니다.
때문에 간혹 안드로이드 스튜디오의 프로젝트 설정과 Gradle빌드 설정이 동기화되지 않아 스튜디오에서 에러로 표시하는 경우도 있습니다.
그림을 보겠습니다.
점선부분이 Gradle과 Android Plugin이 관리하는 부분입니다.
컴파일러는 소스코드를 dex파일로 변환하고, 그 외에는 컴파일된 리소스 형태로 변환합니다.
이를 모아 APK 등의 형태로 패키징하는 것 입니다.
(dex파일 : Android Runtime에서 궁극적으로 실행되는 코드가 포함된 파일, 기계어 )
build.gradle(project)
build.gradle(module)
// 안드로이드 플러그인 사용을 gradle에 적용하는 것 (top-level에 선언되어야 함)
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
// 안드로이드와 관련된 빌드 설정
android {
namespace 'com.sejin.recordwod'
compileSdk 33 // 앱 컴파일 시 사용할 SDK 버전 지정
// AndroidManifest.xml 에서 사용하는 설정들에 대해 동적인 옵션을 주고싶을 때, 이 블록 내에 포함
defaultConfig {
applicationId "com.sejin.recordwod"
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
// 빌드 타입 종류 지정
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
// 라이브러리와 같은 의존성 추가 시 작성
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.6.0'
implementation 'com.google.android.material:material:1.7.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
https://developer.android.com/studio/build?hl=ko
https://uroa.tistory.com/64
https://velog.io/@twaun95/Android-Dependencies-관리-방법1