전체 글

안드로이드 공부 중인 컴붕이 블로그입니다.
· 프로젝트
이번 GDSC 솔루션 챌린지 / WinterCup에 나가게 되었고, 우리 팀은 카메라를 활용한 앱을 기획하게 되었다. 그 중 나는 Jetpack 라이브러리에 카메라 기능을 활용할 수 있는 CameraX가 생각났고, 해당 라이브러리를 활용하여 개발하기로 하였다. Project SetUp build.gradle(project) buildscript { ext{ camerax_version = "1.2.1" } } 2023.02.27을 기준으로 현재 CameraX의 latest version은 1.2.1이다. build.gradle(module) dependencies { // Camerax implementation "androidx.camera:camera-lifecycle:${camerax_version..
· Android
이전 포스팅에서 Dagger에 대해 공부했었다. Dagger는 범용 DI 프레임 워크로, Android에서 사용하기 위해서는 많은 개념과 이해를 가지고 있어야 한다. Hilt는 Dagger2는 Android 전용 DI 라이브러리로 Dagger에 비해 낮은 러닝커브와 빠르게 초기 DI 환경 세팅을 할 수 있는 강점을 가지고 있다. Dagger와 Hilt의 차이점을 기준으로 Hilt의 주요 개념 Component : Dagger 컴포넌트에 설치되는 모듈 컴포넌트를 정의하고, 멀티 컴포넌트를 위해서 따로 subComponents를 정의해야 한다. 컴포넌트에 생성자를 정의하고, 주입되는 메소드를 모두 정의해야 한다. @Subcomponent interface GameComponent { // component를..
· Android
의존성이란, 클래스가 필요로 하는 다른 객체 인스턴스를 의미한다. 의존성 주입은 말 그대로 클래스 내에서 객체 인스턴스의 생성을 직접 하지않고, 외부에서 생성하여 필요한 곳에 주입되도록 코드를 조직화 하는 방법이다. 의존성 주입의 이점 코드를 재사용하게 해준다. 객체 생성 방법이 변경되더라도 클라이언트의 코드에 영향을 주지 않는다. (클라이언트는 의존성 주입을 받는 클래스) 코드 테스트를 더 용이하게 한다. 테스트를 위해서, Fake 저장소를 주입하는 방식과 같이 쉽게 테스트가 가능하다. 클라이언트는 인터페이스로 객체를 알고 있으면 되므로, 좋은 설계를 촉진한다. 클래스의 추상화를 더 잘 할 수 있도록 하며, 멀티 모듈에서 모듈간의 의존성을 소거하는데 유용하다. DI(의존성 주입) 프레임 워크의 이점 프..
· Android
아무런 리소스 및 레퍼런스 없이 개발을 하는 프로젝트를 GreenField Project라고 한다. GreenField Project를 시작할 때 무엇을 먼저 하는 것이 좋을까? 가장 중요하고, 잘 변하지 않는 부분부터 공략한다. 기획자 혹은 비즈니스 부서와 함께 핵심 사용자의 시나리오를 설정하고, 핵심시나리오를 따라 코드를 옮겨 적는다. 이 때 최대한 데이터 및 UI와 같은 가변적인 요소는 배제하고, 애플리케이션의 핵심 로직, 재사용이 가능한 로직을 먼저 구현한다. 1. Domain Layer 도메인 계층은 Ui 계층에서 사용되는 비즈니스 로직을 캡슐화하여 모아놓은 곳이다. 인터페이스 형태로 존재하며, 실제 구현체는 숨겨져 있는 곳이다. 기획자 및 비개발군이 볼 수 있는 계층이며, 실제 비즈니스 로직이..
· Android
1. MVVM의 배경 기존의 패턴인 MVC, MVP의 경우 Model이 확실하게 독립적인 요소로 분리되었으나, View와 Controller, View와 Presenter의 의존성은 여전히 존재했다. 하지만 MVVM은 단방향 데이터 흐름을 가장 잘 구현할 수 있는 패턴으로, 단방향 데이터 흐름을 통해 View와 ViewModel 간의 의존성을 소거하였다. 단방향 데이터 흐름 상위 객체는 하위 객체의 상태를 읽을 수 없고, 하위객체로 이벤트를 보낼 수도 없다. 하위 객체는 상위 객체의 이벤트를 직접적으로 읽을 수 없다. MVVM에 대입하면, View는 사용자의 입력을 전달만 하고, 결과는 받지 않는다. 대신 간접적으로 상태 변경을 통보받는다. 2. MVVM의 구조 2 - 1. View View는 사용자에게..
· Android
안드로이드에서 앱을 설계할 때, 사용할 수 있는 다양한 패턴이 존재한다. MVC (Model - View - Controller) MVP (Model - View - Presenter) MVVM (Model - View - ViewModel) MVI (Model - View - Intent) etc 해당 패턴을 사용하는 이유는 여러가지 로직의 다분화와 클래스간의 의존성을 낮추는데에 있으며, 해당 과정을 통해 유지보수성과 테스트 가능성을 높히고, 더 나아가 지속가능한 개발에 목적을 가지고 있다. UI 계층(MVx)의 대원칙 어떤 경우든 Model은 분리되어야 한다. Model은 데이터를 다루는 모든 비즈니스 로직을 처리하는 계층 View의 역할을 할 수 있는 한 최대한 분리시켜야 한다. Android에서 ..
정자이노
EveryAndroid