안드로이드 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

안드로이드 모듈을 Maven 배포(sonatype을 이용) 방법을 알아보자.

2016년에 JCenter 배포하는 방법을 정리했었는데, jcenter는 사라졌습니다.

이제 Maven을 통한 모듈 배포가 가능한데, JCenter가 쉽게 접근할 수 있는 반명 Maven은 배포하려면 준비해야 할 것들이 많습니다.

이 글에서는 지라 티켓 등록부터 MavenCentral 배포한 결과물까지 살펴보려고 합니다.

필자의 경우 배포한 모듈은 Retrofit FlowCallAdapterFactory입니다. Retrofit에서 Flow을 바로 사용하기 위한 모듈입니다.

Retrofit-FlowCallAdapterFactory

이 글에서 알아볼 내용

  • 모듈을 생성하는 내용은 담지 않습니다.
  • 모듈을 배포하기 위해 사용했던 sonatype Nexus repository 사용 방법을 간단하게 다룬다.
  • 배포를 위한 준비 과정 및 배포 코드(gradle.kts)를 담는다.
  • 배포를 위한 과정을 담지만, 사용한 기술에 대한(kotlin precompiled을) 설명하는 부분은 없습니다.

Read More

Android Multi module(멀티 모듈)의 dependency는 어떻게 하는 게 좋을까?

아키텍쳐가 잘 적용되어 있다면 모듈 나누는 고민도 한 번쯤 해보았을 겁니다. 모듈을 나누는 건 어렵지 않습니다.

모듈을 어떤 식으로 나눌지가 어려운 고민이지만, 단순히 클래스의 기능별로 모듈을 나눌 수 있습니다.

  • Base 모듈 : BaseActivity, BaseViewModel, BaseFragment를 포함하는 모듈
  • Network 모듈 : 네트워크 관련 모듈
  • 유틸 모듈 : 공통 유틸

어떠한 기준으로 모듈을 분리할지만 잘 정하면 어렵지 않습니다.

하지만 사전 설계를 잘 해둬야 추후 중복 디펜던시 발생 및 이유 없는 모듈이 추가됨을 관리할 수 있으리라 생각됩니다.

이 글에서 알아볼 내용

  • 모듈을 나누는 모든 과정을 소개하지는 않습니다.
  • 모듈을 나누면서 디펜던시 의존성을 어떻게 가져갈지 간략하게 정리합니다.

Read More

Android AAC-ViewModel 대신 Lifecycle을 적용해 보자.

Android ViewModel에서 Flow를 이용한 View Controller 방법과 UnitTest 가능한 형태를 살펴보았습니다.

이번 글에서는 Lifecycle에 알아서 반응하여, 초기화할 수 있는 형태로 접근해 보려고 합니다.

이번 글에서는 Android AAC Lifecycle을 활용해 보겠습니다.


이 글에서 알아볼 내용

  • Lifecycle에 따라 함수 호출을 없애보자.
  • AAC Lifecycle을 알아본다.
  • AAC ViewModel 대신 Lifecycle을 적용해 본다.

Read More

Android view에서 ViewModel을 호출했는데, UnitTest는 어떻게 할까?

Android ViewModel에서 Flow를 이용한 View Controller 방법을 살펴보았습니다.

이전 글에서도 작성했지만 그 코드 상태로는 테스트 코드 활용이 불가능합니다.

이번 글에서는 테스트 가능한 형태를 만들기 위한 작업을 해보겠습니다.


이 글에서 알아볼 내용

  • UnitTest 가능한 형태로 함수 분리
  • UnitTest를 위한 dependency 추가
  • UnitTest 작업

Read More