반응형

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을 사용하는 것이 가장 안전합니다.
반응형