xml과 같은 dsl은 숙련도가 아무리 올라도 복잡한 구조의 ui에 대해서는 개선의 한계가 있다. 볼수록 어질어질
그래서 gpl인 kotlin 기반의 compose를 사용하는 것이 훨씬 개발이나 유지보수 측면에서 큰 이점을 가지는 것 같다. 재사용적인 측면이 특히!
오늘은 Jetpack compose를 시작하는 사람들이 dependency 설정하는 데에 조금이나마 도움이 될 수 있는 gradle 설정에 대한 포스팅이다.
jdk / gradle / androidx activity / compose compiler / material3 -> 이 5개가 오늘의 핵심 멤버이다.
1. jvmTarget / compileOptions는 jdk 버전이랑 맞추자!
예전에 jdk11버전을 사용하면서 jvm/compile을 1.8로 설정해놔서 gradle 오류가 난 적이 있다.
또한 compose view가 포함된 프로젝트를 최신 버전의 안드로이드 스튜디오에서 생성하면
프로젝트 레벨 gradle 파일에서 gradle 버전이 8.0.0 이상의 최신 버전으로 설정되어 있는 경우가 있다.
jdk 17 이상을 사용하지 않는다면 gradle 8버전 이상은 호환되지 않으므로, 7.4.2 버전으로 수정하는 것을 추천한다.
또한 Kotlin compiler 1.3.30 이후로 JVM 9 이상을 지원하므로, 사용중인 jdk 버전 또한 호환여부를 확인하는 것이 좋겠다.
2. androidx.activity -> 안정화 버전 확인 필수!
구글에서 제시하는 안정화 버전을 사용하면 웬만해서는 다른 의존성과 호환된다. gradle에서 lint warning을 뿜는다고 최신 버전으로 올려치면 시뻘건 로그들을 보게 될 것이다.
dependencies {
val activity_version = "1.6.1"
// Java language implementation
implementation("androidx.activity:activity:$activity_version")
// Kotlin
implementation("androidx.activity:activity-ktx:$activity_version")
}
2023년 7월 기준 안정화 버전 -> 1.6.1
https://developer.android.com/jetpack/androidx/releases/activity?hl=ko#kts
3. compose.material3 -> 안정화 버전 확인 필수!
dependencies {
implementation("androidx.compose.material3:material3:1.0.1")
implementation("androidx.compose.material3:material3-window-size-class:1.0.1")
}
android {
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.2"
}
kotlinOptions {
jvmTarget = "11"
}
}
2023년 7월 기준 안정화 버전 -> 1.0.1
https://developer.android.com/jetpack/androidx/releases/compose-material3?hl=ko
4. compose compiler -> 안정화 버전 확인 필수!
android {
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.2"
}
kotlinOptions {
jvmTarget = "11"
}
}
2023년 7월 기준 안정화 버전 -> 1.4.2
https://developer.android.com/jetpack/androidx/releases/compose-compiler?hl=ko
선언형 UI인 Jetpack compose가 대세가 되었다. 아직 도입하지 않은 기업들도 많지만, 머지않아 거의 대부분의 개발자들이 xml 대신 compose를 쓰지 않을까.. 싶다.
사용하기 시작한지는 얼마 안되었으나, xml보다 훨~~씬 코드가 가독성이 좋고 코틀린 파일에서 모든 처리가 가능해서 편하다.
p.s) dependency 설정은 다양한 라이브러리/프레임워크들이 뒤섞여 서로 충돌이 나서 호환되지 않는 경우가 빈번하다. 가장 편하게 그것들을 피해가는 방법은 각 dependency들의 공식적인 안정화 버전을 사용하는 것이다.
Jetpack compose 최신 안정화 버전 확인하는 사이트(maven 저장소 탐색을 통한 자동 최신화)
'개발 > 트러블슈팅' 카테고리의 다른 글
[안드로이드] 릴리즈 빌드 시 난독화 설정 문제(카카오, 네이버 소셜 로그인) (1) | 2024.11.18 |
---|---|
[안드로이드] 안드로이드 스튜디오 PluginException (0) | 2023.11.10 |
[안드로이드] FragmentContainerView NullPointerException 해결 (0) | 2023.05.27 |
[안드로이드] is not abstract and does not implement abstract member public abstract fun getActionId() 오류 (0) | 2023.04.17 |
[안드로이드] Could not resolve com.android.tools.build:gradle:7.4.2 오류 (0) | 2023.04.13 |