전체 글

안드로이드 공부 중인 컴붕이 블로그입니다.
· Android
필자는 모든 프로젝트마다 Timber를 도입했다. 단지 이유는 따로 Tag를 설정하지 않아도 된다는 이점 때문이였다. 블로그 스터디를 하던 도중 Timber 사용 이점에 대해서 질문을 받았고, Tag이외의 이점에 대해 설명할 수 없었다. 그래서 이번에 Timber가 Log에 비해 가지는 장점과 추가적으로 Logger에 대해서 알아보고, 소개하려고 한다. 사전 지식 : Log, LogCat Log는 시스템이 동작하면서 발생하는 이벤트 및 메시지의 기록을 의미한다. 오류, HTTP 호출과 같은 상황에서 발생하는 상황에 대한 단계별로 상세한 정보를 나타낼 수 있다. LogCat은 Android Studio에서 제공하는 기능으로 실시간으로 발생한 Log를 확인할 수 있는 창이다. LogCat 상세 기능 사전 지..
· 프로젝트
이전 포스팅에서는 Proto DataStore 소개와 가지고 있는 장점 그리고 초기 세팅 방법을 알아보았다. 이번에는 Proto DataStore 사용방법, 의존성 주입을 통한 사용에 대해서 소개한다. DataStore 구조 public interface DataStore { public val data: Flow public suspend fun updateData(transform: suspend (t: T) -> T): T } DataStore는 데이터를 읽기위한 프로퍼티 data와 데이터를 쓰기 위한 함수 updateData로 구성되어 있다. data는 Flow의 형태로, updateData는 suspend function의 형태를 띄고 있다. 데이터 읽기 DataStore에 사용할 함수와 프로퍼..
· 프로젝트
이번 프로젝트에서 로컬 저장소로 Encrypted Shared Preference를 사용하다 Proto DataStore로 Migration을 하게 되었다. 이번 포스팅에서는 Proto DataStore와 Shared Preference의 비교, Proto DataStore 소개, 전반적인 구현 방법에 대해서 소개한다. Proto DataStore Jetpack Datastore는 프로토콜 버퍼를 사용하여 키-값 쌍 또는 유형이 지정된 객체를 저장할 수 있는 데이터 저장 방법이다. Datastore는 Coroutines, Flow를 사용하여 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장한다. 따로 공식문서에서도 Shared Preference 대신에 DataStore를 쓰라고 권장하고 있다. Dat..
· Android
이전 포스팅에서 모듈의 정의와 모듈화를 하는 기준에 대해서 소개했다. 기존의 코드를 모듈화를 하는 과정이나, 새롭게 모듈을 구성하여 코드를 배치하는 과정 모두 문제점이 발생할 수 있다. 이번 포스팅에서는 모듈을 구성하면서 발생할 수 있는 문제와 실제 필자에게 발생했던 문제점과 이에 대한 해결책을 소개한다. 1. 순환 참조 서로의 gradle/bazel 모듈이 상호 참조하고 있는 상황이다. 처음 모듈화를 진행할 때 많이 직면할 수 있는 문제이다. 대부분의 빌드 툴은 서로의 모듈을 참조하는 것을 막고 있다. 해결책 각 모듈을 인터페이스와 구현체의 쌍으로 분리하여 각 모듈의 구현체는 서로의 인터페이스 모듈을 참조하도록 수정한다. 해당 과정으로 각 모듈은 명시적인 Api를 제공하게 된다. 또한 각 모듈은 서로간..
· Android
앱의 규모가 커지거나 개발 기간이 길어질 수록, 앱의 확장성, 가독성, 코드 품질은 떨어질 수 있다. 모놀리틱 모듈에서 다중 모듈로의 분리를 통해 프로젝트를 더 아키텍처 기반으로 설계하고, 유지 보수성을 개선할 수 있다. 이번 포스팅에서는 모듈의 소개와 필요성 그리고 모듈을 어떤 기준으로 분리하면 좋을지에 대해서 소개한다. 모듈(Module) 모듈은 잘 정의된 범위, 논리적으로 타당한 의존성들, 모듈을 관리하는 담당자를 가지고 있는 코드 뭉치를 의미하며, 앱의 어느 부분에서 재사용될 수 있어야 한다. 모듈의 특징은 아래와 같다. 모듈은 소스파일 및 빌드 설정으로 구성된 모음으로 프로젝트를 구성하는 단위이다. 하나의 모듈이 다른 모듈을 종속 항목으로 사용할 수 있다. 각 모듈은 독립적으로 빌드, 테스트, ..
· Kotlin
리터럴(Literal)은 고정된 값을 표기하는 방법이다. 각 변수에 정수 1이나, 문자열 "Hello"을 대입할 때와 같이 변하지 않는 데이터를 의미한다. 리터럴은 값을 표기하는 방법이라면, 함수 리터럴은 함수의 본문을 표기하는 방법이다. 함수 리터럴의 정의를 Kotlin Docs에서는 "Function literals are functions that are not declared but are passed immediately as an expression."와 같이 표현한다. 이는 선언되지 않고, '식'처럼 즉시 전달되는 함수라는 의미이다. '식'은 '문'과 다르게, 값을 만들어 내고 다른 변수에 대입이 가능한 대상을 의미한다. Kotlin에서는 함수 리터럴을 구현하기 위해, 람다와 익명함수를 사용..
정자이노
EveryAndroid