안드로이드 멀티 모듈(multi module) 관리는 어떻게 하면 좋을까?

최근 안드로이드 개발은 모듈에 대한 고민을 많이 하는 추세이다. 하나의 app 모듈에서 package를 분리하여 개발하던 방식에서 모듈 단위로의 분리를 시도하고 있다.

모듈 단위로 분리하여 개발하면 얻을 수 있는 이득은 무엇일까?

  • 모듈 간 디펜던시 최소화로 아키텍처 적용의 용의
  • DI 적용으로 유연한 개발 가능
  • 단독 화면으로 테스트 가능성

등등 다양한 이유가 있을 것이다.

적절한 모듈 분리도 필요하고, 모듈을 분리하는 조건도 정해야 할 것이다.

  • feature 단위로 모듈을 구분한다.
  • feature 단위의 데이터 역시 함께 구분한다.
  • Architecture에 따라 모듈화를 구성한다.(View-ViewModel + Model(+ Clean Architecture) + core + ui system 등)

다행히 DI가 있으니 이런 모듈이 여러 개여도 app/main 화면에서 쉽게 엮어 줄 수 있다.

이 글에서는 모듈 분리 기법을 소개하지는 않고, 모듈을 분리 시 어떤 식으로 관리하면 좋을지 소개한다.

폴더 구조를 include 하는 방식은 두 가지가 있다.

  • include(“:모듈이름”)
  • include(“:상위폴더:모듈이름”)

여기서는 상위 폴더 위치는 신경쓰지 않는 방식에 대해서 소개한다.


이 글에서 알아볼 내용

  • 폴더 구조의 모듈을 정리해보자.
  • 폴더 구조 작업 시 설정 부분을 살펴본다.
  • 폴더 구조 작업 시 Android 카테고리에서도 볼 수 있는 방법 추가
  • build.gradle plugin 관리 방법을 소개한다.
  • 모듈 나누는 방법을 소개하지는 않는다.

Read More

Android KSP(Kotlin Symbol Processing) 오류 처리

앞 두 글에서 KSP 사용법까지 알아보았다. 이 글에서는 KSP의 로그 출력을 통한 디버그와 오류 처리에 대해 살펴본다.

Kotlin Symbol Processing API - 공식 문서

KSP를 통해 작성한 오류는 단순 워닝을 통해 로그를 대체할 수 있고, 오류 발생으로 빌드에 실패하도록 할 수도 있다.


이 글에서 알아볼 내용

  • 로그 출력하는 방법을 알아본다
  • ksp 에서 오류 처리 방법을 살펴본다

Read More

Android KSP(Kotlin Symbol Processing) 활용할 수 있는 샘플 코드 작업

첫 번째 글에서 KSP 활용을 위한 준비 단계를 살펴보았다. 이번 글에서는 샘플 코드를 적용해 보려고 한다.

Kotlin Symbol Processing API - 공식 문서

이 글에서는 Annotation을 추가하고, KSP에서 이를 활용한 코드 Generated 방법을 소개한다.


이 글에서 알아볼 내용

  • Annotation 적용
  • ksp 활용할 수 있는 샘플 코드 작성
  • ksp에서 오류를 내는 방법

Read More

Android KSP(Kotlin Symbol Processing) 활용을 위한 준비단계!

KSP란 뭘까? Kotlin Symbol Processing의 약자로 경량 컴파일러 플러그인을 개발할때 사용하는 API라고 한다.

Kotlin Symbol Processing API - 공식 문서

직접 만들지는 않았지만 그간 kapt를 활용하였고, 여전히 활용 중이다.

apply plugin: 'kotlin-kapt'
// 또는
kotlin("kapt")

이와 같은 코드가 존재한다면 kapt를 활용하고 있다는 것이다.

DataBinding, Dagger등에서 이를 활용하고 있는데, 이들이 해주는 역할은 @Annotation을 적어주면 코드를 자동으로 만들어주는 역할을 하고 있다는 것이다.

아래와 같이 DataBinding 코드를 확인해 볼 수 있다.

image_01

kapt는 Java 기반이다. ksp는 kotlin 기반으로, kapt 보다 2배 더 빠르고 기능을 단순화 시켜 더 쉽게 만들 수 있다.

필자도 4개의 ksp 모듈을 만들어 활용하고 있다.


이 글에서 알아볼 내용

  • ksp는 언제 쓰는 게 좋을까?
  • ksp를 활용하기 위한 기초 지식

Read More

안드로이드 build.gradle.kts에서 Flavor 나눠진 경우 KSP 빌드 폴더를 flavor 별 sourceSets 설정 방법

Android app 배포 시 다양한 형태의 빌드를 위해 Flavor를 제공하고 있다.

이 문서에 빌드 변형 구성을 통한 설명이 잘 나와있다. Gradle뿐만 아니라 kotlin kts도 가이드하고 있다.

이 글에서는 Kotlin Symbol Processing을 활용하여 자동으로 생성된 build 결과물의 경로를 flavor 별로 어떤 식으로 추가하는 게 좋을지 소개합니다.


이 글에서 알아볼 내용

  • Flavor 별 sourceSets 구성 방법
  • debug/release와 flavor 조합
  • 이 글에서는 KSP 사용 방법에 대해서는 설명하지 않습니다.
  • KSP에서 만들어진 결과물과 flavor에 따른 폴더 지정 방법을 설명합니다.

Read More