[Hilt] Hilt의 표준 컴포넌트를 살펴보자
개발/AOS2024. 8. 2. 15:26[Hilt] Hilt의 표준 컴포넌트를 살펴보자

기존 Dagger와는 다르게 표준 컴포넌트를 제공하기 때문에 개발자가 따로 커스텀 컴포넌트를 만들 필요는 없다.물론 커스텀 컴포넌트를 정의하는 방법은 있으나 일반적이진 않으며 권장하지 않는 방법이다. Dagger와 달리 표준 컴포넌트 조차 소스 코드내에서 인스턴스화 하지 않는다. 컴포넌트 계층 이미지에서 볼 수 있는 각 컴포넌트 명칭 위의 스코프 애노테이션은 해당 컴포넌트의 생명주기에 대한 의존성 범위를 지정할때 사용되는 애노테이션이다. 컴포넌트간 화살표 방향은 하위 컴포넌트를 가르키는 것이다. 일반적으로 하위 컴포넌트는 상위 컴포넌트의 바인딩에 접근할 수 있다. 하지만 역방향으로는 불가능하다. 예를들어, FragmentComponent에서 ActivityComponent의 의존성으로 접근하는 것은 가능..

[Hilt] Hilt 내부 동작의 이해
개발/AOS2024. 8. 1. 16:50[Hilt] Hilt 내부 동작의 이해

애노테이션은 여러가지 속성을 가질 수 있다. 정의된 애노테이션은 클래스에 마킹할 수 있다. 뿐만아니라 필드 메서드 파라미터 등에서도 선택적으로 사용가능하다. 안드로이드에서 많이 사용해본 표준 애노테이션으로 @Override @Non-null 등이 있을 것이다. Hilt의 주요 Annotation의 종류@HiltAndroidApp@AndroidEntryPoint@Module@InstallIn@HiltViewModel 애노테이션의 특징JDK 1.5부터 추가자바(또는 코틀린) 소스코드에 추가하는 메타데이터컴파일러에게 부가정보 제공클래스, 필드, 메서드 및 기타 요소에 선택적으로 선언 가능런타임에서도 참조 가능애노테이션의 목적은 소스코드를 해치지 않으면서 컴파일러에게 부가정보를 제공하기 위해 추가되었다. Ann..

[Hilt] Hilt 의존성 주입 기초 예제로 살펴보기
개발/AOS2024. 8. 1. 16:11[Hilt] Hilt 의존성 주입 기초 예제로 살펴보기

import android.app.Applicationimport dagger.hilt.android.HiltAndroidApp@HiltAndroidAppclass App: Application() {} Hilt의 출발점은 @HiltAndroidApp 애노테이션으로부터 시작된다.이 애노테이션은 애플리케이션 클래스에 마킹하고 빌드하면 기본적인 설정이 끝난다.빌드 이후, 싱글톤 컴포넌트(Container)가 자동적으로 생성된다.  이 싱글톤 컴포넌트에 의존성을 추가할 수 있다.생성자 바인드, 모듈의 프로바이드 어노테이션을 통한 바인딩 기법 두 가지가 존재한다.컴포넌트에 의존성을 추가하는 것을 바인딩, 바인딩을 한다고 표현한다.클라이언트는 컴포넌트에 바인딩된 의존성들을 요청할 수 있다. @AndroidEntr..

[Hilt] Android에서 Hilt란? (24-07-31 내용 보충)
개발/AOS2024. 7. 31. 16:57[Hilt] Android에서 Hilt란? (24-07-31 내용 보충)

Hilt란? 프로젝트에서 종속 항목 수동 삽입을 실행하는 상용구를 줄이는 Andorid용 종속 항목 삽입 라이브러리이다. 종속 항목 삽입(DI)를 실행하려면 모든 클래스와 종속 항목을 수동으로 구성하고 컨테이너를 사용하여 종속 항목을 재사용 및 관리해야 한다. Hilt는 프로젝트의 모든 Android 클래스에 컨테이너를 제공하고 수명 주기를 자동으로 관리함으로써 애플리케이션에서 DI를 사용하는 표준 방법을 제공한다. Google의 Dagger를 기반으로 빌드되었기 때문에 Dagger가 누리는 이점인 컴파일 시간 정확성, 런타임 성능, 확장성 및 Android Studio 지원을 누릴 수 있다. Hilt의 등장 배경Hilt 이전에는 개인이나 회사별로 수동으로 별도의 DI 솔루션을 만들어서 사용했다. 널리 ..

의존성 주입이란?
개발/AOS2024. 7. 30. 14:57의존성 주입이란?

이전에도 종속 항목 삽입에 대해 이야기를 하며 개념과 예제를 다루고, Hilt에 대해 다뤄보며 이야기를 해봤지만, 솔직히 혼자 이해하기에는 아직 어려운 관계로 강의를 통해 공부하며 좀 더 자세히 알아보고 프로젝트를 진행해보고자 한다. 이전에 다뤘던 의존성 주입, 종속 항목 삽입에 대한 포스팅은 다음과 같다.https://small-stepping.tistory.com/957 종속 항목 삽입이전글에서 이어지는 내용입니다.https://small-stepping.tistory.com/956 UI 레이어와 데이터 레이어 분리레이어를 분리하는 이유코드를 여러 레이어로 분리하면 앱의 확장성이 높아지며 앱이 더 견고해small-stepping.tistory.comhttps://small-stepping.tistor..

[Hilt] 기존 프로젝트에 Hilt 적용해보기
개발/AOS2024. 7. 26. 19:02[Hilt] 기존 프로젝트에 Hilt 적용해보기

https://developer.android.com/codelabs/basic-android-kotlin-compose-practice-bus-schedule-app?hl=ko&continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-6-pathway-2%3Fhl%3Dko%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-practice-bus-schedule-app#0 연습: Bus Schedule 앱 빌드  |  Android DevelopersRoom을 사용하여 데이터 유지 Co..

에러: the following options were not recognized by any processor: '[dagger.fastinit, kapt.kotlin.generated]'
개발/Android Studio 에러2024. 7. 25. 16:28에러: the following options were not recognized by any processor: '[dagger.fastinit, kapt.kotlin.generated]'

the following options were not recognized by any processor: '[dagger.fastinit, kapt.kotlin.generated]' Hilt를 kapt로 적용시키다 발생한 오류다.아니 오류까진 아니고 경고창에 해당한다.  https://stackoverflow.com/questions/70550883/warning-the-following-options-were-not-recognized-by-any-processor-dagger-f warning : The following options were not recognized by any processor: '[dagger.fastInit, kapt.kotlin.generated]'I get this w..

에러: 2 files found with path 'meta-inf/gradle/incremental.annotation.processors' from inputs:
개발/Android Studio 에러2024. 7. 25. 16:21에러: 2 files found with path 'meta-inf/gradle/incremental.annotation.processors' from inputs:

Hilt 라이브러리를 적용하다 생긴 오류.  1번째 시도 : build.gradle.kts의 android {} 블록 내부에 META-INF 추가StackOverFlow에서 답변을 찾아본 결과 build.gradle.kts의 android {} 블록 내부에 있는 packaging {} 블록에 annotation.processors 관련한 META-INF를 추가하라는 내용이 존재했다. 이를 보고 작성한 것인지 한 한글로 된 블로그에도 다음과 같은 해결법이 적혀있었다.packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" // ▽ Add this one. excludes += "/META-INF/gradle..

Fragment로만 앱을 만들면 좋은 점?
개발/AOS2024. 7. 18. 16:57Fragment로만 앱을 만들면 좋은 점?

Fragment란?Activity가 가진 문제를 해결하기 위해 등장했다.1. Activity 안의 코드가 길어질 경우, 유지보수가 어려워짐.2. 안드로이드 디바이스의 화면 크기 다양성에 따른 UI 디자인의 어려움.   Fragment의 주요 특징 앱의 전체 UI의 어딘가에서 반복적으로 사용 가능한 부분에 사용 가능.자체 생명 주기를 가지고 있고, 자체 입력 이벤트를 받아 처리할 수 있음.독립적인 존재가 불가능하며 반드시 Activity나 다른 Fragment에 호스팅되어야 함.Android Jetpack 라이브러리 중 Navigation, BottomNavigationView, ViewPager2 등 fragment와 호환되도록 설계되어 있어 자주 사용됨.Activity와 Fragment의 목적성이 다름..

Activity 생명 주기
개발/AOS2024. 7. 18. 16:40Activity 생명 주기

기본적으로 액티비티 생명주기는 다음과 같다.onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestory() 메소드설명다음 메소드onCreate()액티비티 생성시 호출, 사용자 인터페이스 초기화에 사용onStart()onRestart()액티비티가 멈춘후 다시 시작되기 직전에 호출onStart()onStart()액티비티가 사용자에게 보여지기 직전에 호출onResume() / onStop()onResume()액티비티가 사용자와 상호작용하기 직전에 호출onPause()onPause()다른 액티비티가 보여질때 호출데이터 저장, 스레드 중지 등의 처리를 하기 좋은 메소드onResume() / onStop()onStop()액티비티가 더이상 사..

image