CI\CD/Gradle

    toml 파일을 사용해 Gradle 의존성 관리하기

    toml 파일이란 무엇인가? TOML(Tom's Obvious, Minimal Language)은 GitHub의 공동 창립자인 Tom Preston-Werner가 만든 파일 형식으로, 이름 그대로, 간결하면서도 읽기 쉬운 파일 형식이다. 일반적으로 키-값쌍으로 값들을 관리하며, 하나의 파일로 여러 프로젝트의 버전 관리를 통합하는데 사용될 수 있다. 그동안 안드로이드에서는 주로 buildSrc를 사용해 버전 관리를 해왔는데, 최근 toml이 매우 활성화되기 시작해 이번 글에서 다뤄보고자 한다. *Android Developers 에서도 공식적으로 Version Catalog로 이전 이라는 명칭으로, toml 파일을 사용하는 방법을 설명하고 있으며, Android Gradle Plugin(AGP) 버전 7...

    [Gradle] Plugin이란 무엇인가? 플러그인 이해하고 Custom Plugin 만들기

    Gradle Plugin이란? Plugin이란 Gradle Task의 집합이다. Gradle Task는 어플리케이션 빌드부터 테스트까지 다양한 작업을 수행하는 작업 단위를 뜻한다. *만약 Task에 대한 이해가 부족하다면 다음글을 참조하길 바란다. Plugin을 우리가 특정 작업(어플리케이션 개발 등)을 하기 위해서 모아놓은 Task 들의 묶음이다. 예를 들어 안드로이드 어플리케이션을 개발하기 위해서는 필요한 라이브러리들을 받아온 후 해당 라이브러리들을 사용해 코틀린이나 자바 코드를 컴파일하고, 컴파일된 바이트코드의 묶음을 패키징 해 apk나 aab 파일로 만들어야 한다. 추가적으로 DB와 통신하는 부분들에 문제가 없는지, 서버와 통신하는 부분들에 문제가 없는지에 대한 테스트를 돌리기도 해야 한다. 이러..

    Gradle이 동작하는 순서와 Gradle Task가 동작하는 방식 알아보기

    Gradle이 동작하는 순서 Gradle은 Initialization, Configuration, Execution 세가지 Step을 통해 작업을 수행한다. 💡 Gradle이 동작하는 순서 1. Initialization 2. Configuration 3. Execution Initialization Initialization step에서는 gradle은 settings.gradle.kts를 읽어 프로젝트 이름이 무엇인지, 프로젝트에는 어떤 모듈들이 있는지를 확인한다. 멀티 모듈 프로젝트 일 때는 각 모듈 별로 build.gradle.kts 파일이 있는지 이 단계에서 확인한다. 예를 들어 settings.gradle.kts가 다음과 같을 때를 살펴보자. rootProject.name = "KotlinPr..

    [Gradle] implementation과 api, compile의 차이는 무엇인가?

    implementation과 api, compile build.gradle에서 사용하는 implementation과 api는 모두 라이브러리를 적용시키는 키워드이다. 오래된 Gradle 버전에는 implementation이 없어서 compile을 사용했고, 새로운 버전(6.x 이후 버전)에서 compile이 deprecated 되면서 compile 대신에 api 키워드가 사용되게 되었다. 이 때문에 오래된 프로젝트들의 build.gradle 파일들을 보면 api와 compile을 implementation 대신 쓰는 것을 볼 수 있다. 즉, api와 compile은 같은 역할을 한다. 하지만 Gradle은 api나 compile를 사용하는 것을 권장하지 않는다. api를 통해 라이브러리를 가져올 경우 라..

    [Gradle] build.gradle의 dependencies 블록 한 번에 정리하기. implementation, testImplementaion의 차이와 라이브러리 구성

    dependencies 블록이란? dependencies 블록은 프로젝트를 구성하기 위해 받아와야 할 라이브러리를 정의해놓는 공간이다. dependencies 블록에는 보통 다음과 같은 문법이 들어간다. dependencies { implementation("androidx.navigation:navigation-compose:2.4.0-rc01") } *위는 build.gradle.kts 기준이다. groovy에서는 보통 접은글과 같이 쓴다. 더보기 groovy에서는 보통 다음과 같이 쓴다. dependencies { implementation "androidx.navigation:navigation-compose:2.4.0-rc01" } 위와 같은 implementation을 정의하면 앱 실행, 패키..