본문 바로가기

안드로이드

[Android] 1. 구글 코드랩 Dagger를 이용한 리팩토링 - 개요 및 셋업

개요

해당 코드랩을 참고하여 작성된 포스트입니다.

 

Application Graph

아래는 최종적으로 생성하고 테스트할 Application Graph이다. 화살표 방향은 객체간의 의존성을 표현한다.

$ git clone https://github.com/googlecodelabs/android-dagger

위 프로젝트의 master 브런치가 코드랩 강의의 시작점이다.

 

 

해당 앱은 4개의 액티비티 플로우로 구성된다.

  • Registration: 유저가 이름, 비밀번호, 약관 동의를 통해 등록이 가능하다.
  • Login: 유저 정보를 통해 로그인 및 로그아웃이 가능하다.
  • Home: 유저가 입장하고 읽지 않은 notification이 몇 개가 존재하는지 확인할 수 있다.
  • Settings: 유저가 로그아웃 및 읽지 않은 notification refresh할 수 있다. (랜덤 넘버 생성)

 

해당 프로젝트는 View(Activity,Fragment)의 복잡성이 ViewModel로 넘어가는 전형적인 MVVM 패턴을 따른다.

 

부연 설명

해당 코드는 앱 설계 방식이 아닌 Dagger를 앱 아키텍처에 연동하는 다양한 방법을 보여주기 위함이다. 해당 코드랩을 통해 Dagger의 주요 개념을 이해하고 프로젝트에 적절히 적용할 수 있게 된다.

 

 

프로젝트 설정

Dagger를 프로젝트에 추가한다.

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

...

dependencies {
    ...
    def dagger_version = "2.27"
    implementation "com.google.dagger:dagger:$dagger_version"
    kapt "com.google.dagger:dagger-compiler:$dagger_version"
}

Dagger는 자바 어노테이션 모델로 구현되었으며, 컴파일 타임에서 annotation processor를 통해 코드가 생성된다. annotation processor는 kapt를 통해 지원한다.