본문 바로가기
[IT] Android

안드로이드 스튜디오 프로젝트 생성 및 build.gradle.kts 세팅

by 오리엔탈킴 2024. 9. 23.

Andriod Studio (Android Studio Koala Feature Drop | 2024.1.2) 버전에서 New 프로젝트를 생성하면, 아래와 같이 간단한 정보만 입력하면 기본 초기 프로젝트가 생성됩니다. 그리고 Gradle Build 스크립트 언어를 추천으로 되어 있는 Kotlin DSL로 선택을 하게되면 아래와 같이 기본 세팅 파일이 생성되는데, 간략하게 어떤 설정인지 정리를 하려고 합니다.

New Project

 

build.gradle.kts (Project 레벨)

plugins {
    alias(libs.plugins.android.application) apply false
    // 안드로이드 애플리케이션 플러그인을 참조
    // apply false는 이 플러그인이 프로젝트 레벨에서는 적용되지 않고, 하위 모듈에서 필요할 때 적용

    alias(libs.plugins.kotlin.android) apply false
    // Kotlin 안드로이드 플러그인을 참조
}
// 버전 카탈로그(version catalogs)를 사용
// 'libs'라는 별칭을 통해 플러그인 버전을 중앙에서 관리

 

build.gradle.kts (Module 레벨)

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    // 안드로이드 애플리케이션과 Kotlin 안드로이드 플러그인을 적용
}

android {
    namespace = "com.example.newProject"
    compileSdk = 34

    defaultConfig {
        // 앱 ID, 최소/목표 SDK 버전, 버전 코드 및 이름 등을 정의
        applicationId = "com.example.newProject
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary = true
        }
    }

    buildTypes {
        // 릴리스 빌드 설정 (현재 minify 비활성화)
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        // compileOptions: Java 호환성 버전 설정
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        // kotlinOptions: Kotlin 컴파일러 설정
        jvmTarget = "1.8"
    }
    buildFeatures {
        // buildFeatures: Jetpack Compose 사용 설정
        compose = true
    }
    composeOptions {
        // composeOptions: Compose 컴파일러 버전 설정
        kotlinCompilerExtensionVersion = "1.5.1"
    }
    packaging {
        // packaging: 리소스 패키징 규칙 설정
        resources {
            excludes += "/META-INF/{AL2.0,LGPL2.1}"
        }
    }
}

dependencies {
    // 라이브러리들을 정의 (버전 카탈로그를 사용하여 의존성 버전을 관리)
    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.lifecycle.runtime.ktx)
    implementation(libs.androidx.activity.compose)
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.ui)
    implementation(libs.androidx.ui.graphics)
    implementation(libs.androidx.ui.tooling.preview)
    implementation(libs.androidx.material3)
    testImplementation(libs.junit)
    androidTestImplementation(libs.androidx.junit)
    androidTestImplementation(libs.androidx.espresso.core)
    androidTestImplementation(platform(libs.androidx.compose.bom))
    androidTestImplementation(libs.androidx.ui.test.junit4)
    debugImplementation(libs.androidx.ui.tooling)
    debugImplementation(libs.androidx.ui.test.manifest)
}

 

settings.gradle.kts

pluginManagement {
    // 프로젝트에서 사용할 플러그인들의 저장소를 정의
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
                // 안드로이드 관련 플러그인을 위한 Google의 저장
                // 특정 그룹(com.android, com.google, androidx)만 포함하도록 설정
            }
        }
        mavenCentral()
        // 중앙 Maven 저장소
        gradlePluginPortal()
        // Gradle 플러그인 포털
    }
}
dependencyResolutionManagement {
    // 프로젝트의 의존성 해결 방식을 관리
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    // 개별 모듈에서 저장소를 정의하지 못하게 하고, 여기서 정의된 저장소만 사용하도록 강제
    repositories {
        google()
        mavenCentral()
        // 의존성을 가져올 저장소를 정의
    }
}

rootProject.name = "newProject
include(":app")
 // 'app' 모듈을 프로젝트에 포함

 

반응형

댓글