android jetpack compose hilt 적용하기(1)

burndown·2022년 4월 13일
0

Jetpack Compose에서 Hilt를 적용하는 방법에 대한 가이드라인을 찾아봐도 없다..

그래서 직접 경험해보고 만들어 보기로했다.

원래 프론트엔드 개발을 했으나 안드로이드 개발이 필요하여 1년도 안된 주니어 안드로이드개발자가 쓴 글이기때문에 많은 피드백이 필요할수도 있습니다.


초기세팅

Hilt를 추가한다

// build.gradle (Module)
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
// build.gradle (Project)
buildscript { 
    ext {
    	...
        hilt_version = "2.36"
    }
    
    dependencies {
    	...
        classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
    }
}

@HiltAndridApp 지정하기

이 가이드라인대로 @HiltAndroidApp을 꼭 Application을 상속받은 앱에 적용해주어야 합니다.

jetpack compose에는 이것에 대한 가이드라인이 하나도 없습니다.

저는 MainActivity에 MainApplication 클래스를 생성하여 해결하였습니다.

@HiltAndroidApp
class MainApplication: Application() {
    override fun onCreate() {
        super.onCreate()
    }
}


@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent { ... }
    }
}

Mainfest에 의 name attribute를 추가합니다.

    <application
    	...
        android:name=".MainApplication">
        <activity
            android:name=".MainActivity"
            ...>
            ...
        </activity>
    </application>

이제 Application의 시작은 MainApplication임을 알수 있고, @HiltAndroidApp도 지정할수 있게 되었습니다.

Jetpack compose로 프로젝트 생성시 Applcation을 상속받은 클래스가 없어 어떻게 다른방법이 있나 찾아보았었는데, 직접 만들어주면 되었습니다.

Application?

https://developer.android.com/reference/android/app/Application

전역 응용 프로그램 상태를 유지하기 위한 기본 클래스입니다.
Application은 Manifest.xml의 application 태그의 요소인 android:name을 지정해주면 사용할수 있습니다.

애플리케이션/패키지에 대한 프로세스가 생성될 때 다른 클래스보다 먼저 인스턴스화됩니다.

이제 Hilt요소들을 사용할수있다.

profile
어떤 서비스든 만들어내는 개발자

0개의 댓글