본문 바로가기
Error.

✅ [해결 방법] Jetpack Compose SnapshotStateList.conditionalUpdate failed lock verification 경고 해결 방법

by h4r3 2025. 6. 17.
반응형

Jetpack Compose를 사용 중 아래와 같은 경고 로그가 출력된다면, 이는 성능 저하의 신호일 수 있습니다

Method boolean androidx.compose.runtime.snapshots.SnapshotStateList.conditionalUpdate(boolean, kotlin.jvm.functions.Function1) failed lock verification and will run slower.
Common causes for lock verification issues are non-optimized dex code and incorrect proguard optimizations.

이 글에서는 해당 오류의 원인과 Jetpack Compose BOM 버전 업그레이드로 문제를 해결하는 방법을 소개합니다.


📌 원인 분석: 왜 이런 로그가 발생할까?

이 경고 메시지는 **ART(Android Runtime)**에서 lock verification이 실패하여, 해당 메서드가 최적화되지 않고 느리게 실행될 수 있음을 나타냅니다.

 

주요 원인:

  • Jetpack Compose 내부 메서드(Dex 변환 과정에서) 최적화 누락
  • ProGuard(R8) 설정에 의한 클래스 구조 변경
  • Jetpack Compose 버그 또는 Kotlin/AGP와의 버전 호환 문제

✅ 해결 방법: Compose BOM 버전 업그레이드

이 문제는 Jetpack Compose BOM 버전 2025.06.00 이상으로 업그레이드하면 해결됩니다.

🔧 변경 방법 (Gradle 설정 예시)

// build.gradle.kts (Module)
dependencies {
    val composeBom = platform("androidx.compose:compose-bom:2025.06.00")
    implementation(composeBom)
    
    // Compose core dependencies
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.material3:material3")
    implementation("androidx.compose.runtime:runtime")
}

 

버전 업그레이드 후, 해당 로그는 더 이상 출력되지 않으며 성능 저하 위험도 사라집니다.


💡 ProGuard 설정 점검

혹시라도 릴리즈 빌드에서 문제가 발생한다면, 아래와 같이 ProGuard 설정도 추가로 확인하세요:

# Compose 관련 클래스 보호
-keep class androidx.compose.** { *; }
-keepclassmembers class androidx.compose.** { *; }
-dontwarn androidx.compose.**

🧭 요약

항목 내용

문제 로그 SnapshotStateList.conditionalUpdate failed lock verification
주요 원인 오래된 Compose BOM, R8 최적화 오류
해결 방법 Compose BOM을 2025.06.00 이상으로 업그레이드
추가 팁 ProGuard에서 Compose 내부 클래스를 보호하도록 설정

 


🔗 참고 링크


🔍 자주 묻는 질문 (FAQ)

Q. 이 로그는 앱 동작에 영향을 주나요?

A. 기능에는 영향을 주지 않지만, 특정 Compose 상태 업데이트가 느리게 동작할 수 있어 성능 저하가 발생할 수 있습니다.

Q. 릴리즈 빌드에서도 이 로그가 나오나요?

A. 일반적으로 디버그 빌드에서 나타나며, 릴리즈 빌드에서는 ProGuard 최적화 여부에 따라 다릅니다.


이와 같이 Compose 관련 경고는 주기적인 BOM 업데이트만으로 쉽게 해결할 수 있습니다.

Jetpack Compose 프로젝트를 유지보수할 때는 최신 안정 버전의 BOM을 사용하는 것이 가장 안전합니다.

반응형