[Android] Sunflower 클론코딩 (22.06.02)

유재민·2022년 6월 5일
0

Sunflower

목록 보기
2/12
post-thumbnail

Data binding Setup

// build.gradle (:app)

android {
		...
		buildFeatures{
				dataBinding true
		}
		...
}
// GardenActivity.kt

import androidx.databinding.DataBindingUtil.setContentView

...

override fun onCreate(..) {
		...
		setContentView<ActivityGardenBinding>(this, R.layout.activity_garden)
}

build.gradle Setup

// build.gradle (:project)

buildScript {
		ext {
				// Sdk and tools
        compileSdkVersion = 32
        minSdkVersion = 21
        targetSdkVersion = 30

        // App dependencies
        appCompatVersion = '1.4.1'
				...
		}
}

build.gradle 에 ext 변수를 이용하여 한 공간에 버전을 정리해둔다.

// build.gradle (:app)

dependencies {
    implementation "androidx.core:core-ktx:$rootProject.ktxVersion"
		...
}

Dagger Hilt

  • Dependency Setup
// build.gradle (:project)

buildScript{
		ext {
		...
		hiltVersion = '2.38.1'
		}

		dependencies {
				classpath "com.google.dagger:hilt-android-gradle-plugin:$hiltVersion"
		}
}
// build.gradle (:app)

plugins {
		...
		id 'kotlin-kapt'
		id 'dagger.hilt.android.plugin'
}

...

dependencies {
		...
		implementation "com.google.dagger:hilt-android:$rootProject.hiltVersion"
    kapt "com.google.dagger:hilt-android-compiler:$rootProject.hiltVersion"
}
  • @HiltAndroidApp 어노테이션 추가
// MainApplication.kt

import android.app.Application
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class MainApplication : Application()

의존성 주입의 시작점을 지정하고 Application의 생명주기를 따르며,

컴파일 단계에서 DI에 필요한 구성요소들을 초기화한다.

  • @AndroidEntryPoint 어노테이션 추가
// GardenActivity.kt

import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class GardenActivity : AppCompatActivity() {
		...
}

객체를 주입할 Android 클래스에 @AndroidEntryPoint 어노테이션 추가

자동으로 생명주기에 따라 적절한 시점에 Hilt 요소로 인스턴스화 되어 처리됨

<Hilt가 지원하는 Android Class>

  • Application (@HiltAndroidApp)
  • Activity
  • Fragment
  • View
  • Service
  • BroadcastReceiver
profile
유잼코딩

0개의 댓글