android jetpack compose hilt 적용하기(1)

burndown·2022년 4월 13일

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개의 댓글