본문 바로가기
Updates.

🚀 AndroidX Lifecycle 2.8.7 → 2.9.1 업데이트 종합 가이드

by h4r3 2025. 6. 26.
반응형

 

 

Lifecycle 라이브러리는 Activity, Fragment, ViewModel 등의 생명주기 관리를 돕는 핵심 구성 요소입니다.

2.9.1 버전은 Compose 통합, Kotlin 2.0 대응, 모듈 동기화 등 여러 중요한 개선사항을 담고 있습니다.


📅 버전 개요

버전 릴리즈일 핵심 요약
2.8.7 2024년 10월 30일 기존 안정화 버전
2.9.1 2025년 6월 4일 Compose 강화, Kotlin 2.0 stdlib 대응, 모듈 동기화 (mvnrepository.com, loom.com, googlesamples.github.io)

🗂️ 주요 변경사항 요약

  1. Kotlin 2.0 stdlib 지원
    모든 lifecycle 서브 모듈이 Kotlin 2.0 이상용으로 재빌드됨 (loom.com)
  2. Compose용 Lifecycle 모듈 추가
    • lifecycle-runtime-compose, lifecycle-viewmodel-compose 포함 (mvnrepository.com)
    • Compose 코드 내에서 생명주기를 직관적으로 사용할 수 있음
  3. 모듈 버전 일관화
    모든 lifecycle 관련 모듈 (runtime, viewmodel-ktx, livecycle-livedata-ktx 등)이 2.9.1로 맞춤 설정 (medium.com, mvnrepository.com)
  4. 의존성 정리 및 내부 패키지 개선
    lifecycle-runtime의 패키지명 고유화 등 실사용 충돌 방지를 위해 구조 개선 (loom.com)

💻 코드 예제

✅ 1. Compose에서 LiveData 관찰

@Composable
fun ProfileScreen(vm: ProfileViewModel = viewModel()) {
    val name by vm.userName.observeAsState("")
    Text("Hello, $name!")
}
  • lifecycle-livedata-ktx의 observeAsState 함수가 Compose와 자연스럽게 통합됨.

✅ 2. Compose 생명주기 옵저버 사용

@Composable
fun LifecycleAwareScreen(onResume: () -> Unit) {
    val lifecycleOwner = LocalLifecycleOwner.current
    DisposableEffect(lifecycleOwner) {
        val obs = LifecycleEventObserver { _, event ->
            if (event == Lifecycle.Event.ON_RESUME) onResume()
        }
        lifecycleOwner.lifecycle.addObserver(obs)
        onDispose { lifecycleOwner.lifecycle.removeObserver(obs) }
    }
    Text("Lifecycle aware content")
}

✅ 3. SavedStateHandle과 ViewModel 통합

@HiltViewModel
class DetailViewModel @Inject constructor(
    private val repo: Repo,
    savedStateHandle: SavedStateHandle
) : ViewModel() {
    val id: String = checkNotNull(savedStateHandle["id"])
    val dataFlow = repo.loadData(id)
}
composable("detail/{id}") {
    val viewModel: DetailViewModel = hiltViewModel()
    DetailScreen(viewModel.dataFlow.collectAsState().value)
}

🛠️ 마이그레이션 팁

  1. 모든 모듈을 2.9.1로 통일
    • lifecycle-runtime-ktx, lifecycle-viewmodel-ktx, lifecycle-livedata-ktx 등
  2. Kotlin stdlib 2.0으로 맞추기
    • Gradle에서 kotlin("stdlib")를 2.0 계열로 고정
  3. Compose-aware 모듈 사용
    • lifecycle-runtime-compose, viewmodel-compose 추가 적용
  4. Compose 코드 리팩토링
    • DisposableEffect, observeAsState, viewModel() 활용
  5. 의존성 충돌 방지
    • Maven 종속성 보기로 중복 여부 점검

✅ 요약

변화 항목 2.8.7 방식 2.9.1 방식
Kotlin stdlib 대응 1.9.x ✅ Kotlin 2.0 지원
Compose 통합 수동 설정 필요 ✅ Compose 전용 모듈 포함
모듈 버전 일관성 일부 버전 혼합 가능 ✅ 2.9.1로 일괄 정렬
internal 패키지 충돌 개선 일부 충돌 가능 ✅ 패키지 고유화 및 정리 완료

🔗 참고 링크


Compose 앱에서의 생명주기 처리와 Kotlin 2.0 대응이 필요하다면 2.9.1은 필수 버전입니다.

반응형