필자는 모든 프로젝트마다 Timber를 도입했다. 단지 이유는 따로 Tag를 설정하지 않아도 된다는 이점 때문이였다. 블로그 스터디를 하던 도중 Timber 사용 이점에 대해서 질문을 받았고, Tag이외의 이점에 대해 설명할 수 없었다. 그래서 이번에 Timber가 Log에 비해 가지는 장점과 추가적으로 Logger에 대해서 알아보고, 소개하려고 한다. 사전 지식 : Log, LogCat Log는 시스템이 동작하면서 발생하는 이벤트 및 메시지의 기록을 의미한다. 오류, HTTP 호출과 같은 상황에서 발생하는 상황에 대한 단계별로 상세한 정보를 나타낼 수 있다. LogCat은 Android Studio에서 제공하는 기능으로 실시간으로 발생한 Log를 확인할 수 있는 창이다. LogCat 상세 기능 사전 지..
이전 포스팅에서 모듈의 정의와 모듈화를 하는 기준에 대해서 소개했다. 기존의 코드를 모듈화를 하는 과정이나, 새롭게 모듈을 구성하여 코드를 배치하는 과정 모두 문제점이 발생할 수 있다. 이번 포스팅에서는 모듈을 구성하면서 발생할 수 있는 문제와 실제 필자에게 발생했던 문제점과 이에 대한 해결책을 소개한다. 1. 순환 참조 서로의 gradle/bazel 모듈이 상호 참조하고 있는 상황이다. 처음 모듈화를 진행할 때 많이 직면할 수 있는 문제이다. 대부분의 빌드 툴은 서로의 모듈을 참조하는 것을 막고 있다. 해결책 각 모듈을 인터페이스와 구현체의 쌍으로 분리하여 각 모듈의 구현체는 서로의 인터페이스 모듈을 참조하도록 수정한다. 해당 과정으로 각 모듈은 명시적인 Api를 제공하게 된다. 또한 각 모듈은 서로간..
앱의 규모가 커지거나 개발 기간이 길어질 수록, 앱의 확장성, 가독성, 코드 품질은 떨어질 수 있다. 모놀리틱 모듈에서 다중 모듈로의 분리를 통해 프로젝트를 더 아키텍처 기반으로 설계하고, 유지 보수성을 개선할 수 있다. 이번 포스팅에서는 모듈의 소개와 필요성 그리고 모듈을 어떤 기준으로 분리하면 좋을지에 대해서 소개한다. 모듈(Module) 모듈은 잘 정의된 범위, 논리적으로 타당한 의존성들, 모듈을 관리하는 담당자를 가지고 있는 코드 뭉치를 의미하며, 앱의 어느 부분에서 재사용될 수 있어야 한다. 모듈의 특징은 아래와 같다. 모듈은 소스파일 및 빌드 설정으로 구성된 모음으로 프로젝트를 구성하는 단위이다. 하나의 모듈이 다른 모듈을 종속 항목으로 사용할 수 있다. 각 모듈은 독립적으로 빌드, 테스트, ..
다중 모듈 프로젝트를 도입하면서, 각 모듈에서 참조하는 종속성과 종속성간 버전 관리에 대해서 생각해보게 되었다. 그러던 중 Now in Android에서 Version Catalog를 통해서 중앙에서 종속성 버전 관리를 하고 있는 것을 알게되었다. 이번에는 Version Catalog의 소개와 해당 Version Catalog를 도입하는 방법에 대해서 포스팅하려고 한다. What is Version Catalog? A version catalog is a list of dependencies, represented as dependency coordinates, that a user can pick from when declaring dependencies in a build script. Version..
안드로이드 개발을 하다보면 여러개 View의 데이터를 서로 공유해야하는 상황이 꼭 발생한다. 예를 들면 회원가입 페이지에서 여러개의 화면에서 사용자의 정보를 입력받을 때, 각 화면에서는 하나의 정보(전화번호, 이름)을 받아도 이전의 화면에서 받았던 정보를 저장해야 한다. 안드로이드에서는 다양한 방법으로 각 화면간의 데이터가 공유가 가능하다. 몇가지 방법을 예시와 함께 소개하며, 편의를 위해 가장 많이 사용하는 Fragment를 기준으로 작성하였다. 아래의 방식 외에도 추가적으로 공유하는 방법이 존재할 수 있으며, 장점과 단점을 파악하여 알맞는 방법을 선택하는 것이 중요하다. 1. Navigation Argument 첫번째 방법은 Navigation Component의 Safe Args를 이용하거나 Bun..
이전 포스팅에서 Dagger에 대해 공부했었다. Dagger는 범용 DI 프레임 워크로, Android에서 사용하기 위해서는 많은 개념과 이해를 가지고 있어야 한다. Hilt는 Dagger2는 Android 전용 DI 라이브러리로 Dagger에 비해 낮은 러닝커브와 빠르게 초기 DI 환경 세팅을 할 수 있는 강점을 가지고 있다. Dagger와 Hilt의 차이점을 기준으로 Hilt의 주요 개념 Component : Dagger 컴포넌트에 설치되는 모듈 컴포넌트를 정의하고, 멀티 컴포넌트를 위해서 따로 subComponents를 정의해야 한다. 컴포넌트에 생성자를 정의하고, 주입되는 메소드를 모두 정의해야 한다. @Subcomponent interface GameComponent { // component를..