-
Notifications
You must be signed in to change notification settings - Fork 0
build: 프로젝트 버전 개선 #776
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build: 프로젝트 버전 개선 #776
Conversation
요약이 PR은 Kotlin Compose 컴파일러 플러그인 의존성을 추가하고, Android 구성 확장을 업데이트하며, Gradle, Kotlin, Firebase, AndroidX 등 포괄적인 의존성 버전을 업그레이드합니다. 변경사항
예상 코드 리뷰 노력🎯 3 (보통) | ⏱️ ~25분 관련 가능성 있는 PR
제안된 레이블
제안된 검토자
시
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
m6z1
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In @build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt:
- Around line 24-30: The code uses two different quote-stripping behaviors;
unify them by choosing one approach and applying it consistently: either replace
removeSurrounding("\"") in the buildConfigs() implementations with trim('"') to
allow trimming unmatched quotes, or change getLocalProperty() to use
removeSurrounding("\"") if you want to only drop enclosing pairs; update all
occurrences (buildConfigs(), getLocalProperty(), and any other helpers) to the
chosen method so quote handling is consistent across BuildConfigExtensions.kt.
In @gradle/libs.versions.toml:
- Around line 7-9: 현재 gradle/libs.versions.toml의 android-gradle-plugin, kotlin,
serialization 버전 조합이 호환되지 않습니다: android-gradle-plugin = "8.13.2"은 Kotlin 2.3 이상을
요구하므로 kotlin = "2.2.0"을 즉시 업그레이드하거나 AGP를 8.10 이하로 내리세요; 구체적으로
libs.versions.toml의 kotlin 항목(kotlin) 값을 2.3.x 이상으로 올리거나 android-gradle-plugin
항목(android-gradle-plugin)을 8.10.x 이하로 다운그레이드하고, 변경 후 빌드 스크립트에서 kotlinOptions →
compilerOptions 마이그레이션 필요 여부와 바이너리 호환성 영향을 점검하세요.
🧹 Nitpick comments (1)
build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt (1)
49-49: 일관되지 않은 따옴표 처리 방식입니다.
buildConfigs함수들은removeSurrounding("\"")+ 재포장을 사용하지만,getLocalProperty는 여전히trim('"')을 사용합니다. 이는 일관성 문제를 야기할 수 있습니다.♻️ 일관성을 위한 제안
-): String = getLocalProperties(rootDir).getProperty(key).trim('"') +): String = getLocalProperties(rootDir).getProperty(key)?.removeSurrounding("\"") ?: ""
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
build-logic/build.gradle.ktsbuild-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.ktbuild-logic/src/main/kotlin/com/into/websoso/ProjectExtensions.ktbuild-logic/src/main/kotlin/websoso.android.compose.gradle.ktsbuild.gradle.ktsgradle/libs.versions.tomlgradle/wrapper/gradle-wrapper.properties
🧰 Additional context used
🧬 Code graph analysis (1)
build-logic/build.gradle.kts (1)
build-logic/src/main/kotlin/com/into/websoso/WebsosoDependenciesExtensions.kt (1)
implementation(70-76)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: build
🔇 Additional comments (11)
build-logic/src/main/kotlin/com/into/websoso/ProjectExtensions.kt (2)
21-25: 타입 파라미터 업데이트만 이루어졌으며, 에러 처리 동작의 변경은 없습니다.
androidExtension속성의.getOrThrow()호출은 이미 이전 커밋부터 존재했습니다. 이번 버전 업데이트에서 변경된 사항은CommonExtension의 타입 파라미터만 5개에서 6개로 증가한 것입니다 (CommonExtension<*, *, *, *, *>→CommonExtension<*, *, *, *, *, *>). 이는 AGP 버전 업그레이드로 인한 정상적인 변경이며, 에러 처리 동작의 변경이나 호출부의 영향은 없습니다.Likely an incorrect or invalid review comment.
15-16: AGP 8.13.2 업그레이드에 따른CommonExtension타입 파라미터 변경이 올바르게 적용되었습니다. AGP 8.13부터CommonExtension은 6개의 제네릭 타입 파라미터(새로 추가된InstallationT포함)를 요구하며, 모든 확장 프로퍼티(applicationExtension,libraryExtension,androidExtension)가 일관되게 업데이트되었습니다. 프로젝트 전체의 사용처도 안전하게 처리되고 있습니다.build-logic/build.gradle.kts (1)
9-9: 변경 사항이 적절합니다.Kotlin Compose 컴파일러 플러그인 의존성이 올바르게 추가되었으며, websoso.android.compose.gradle.kts의 플러그인 적용과 일관성 있게 구성되었습니다.
build-logic/src/main/kotlin/websoso.android.compose.gradle.kts (1)
4-6: Compose 컴파일러 플러그인 마이그레이션이 올바르게 수행되었습니다.하드코딩된
kotlinCompilerExtensionVersion대신 플러그인 기반 접근 방식을 사용하는 것은 Kotlin 2.0+ 권장 패턴입니다. Kotlin 2.2.0과의 호환성도 확인되었으며, 플러그인이 자동으로 컴파일러 버전을 관리합니다. Kotlin 2.2.0을 사용할 경우 Compose Compiler Gradle 플러그인 버전이 2.2.0과 일치해야 합니다.build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt (1)
8-18:gradleLocalProperties는 이 프로젝트에서 사용되지 않습니다.검색 결과에 따르면 코드베이스에
gradleLocalProperties사용처가 없습니다. 커스텀getLocalProperties함수가 유일한 구현 방식이며, 이는 build-logic 모듈(Gradle 컨벤션 플러그인 컨텍스트)에서 적절한 접근입니다.gradleLocalProperties는 일반적으로 루트 레벨의build.gradle.kts파일에서 사용되는 반면, 이 구현은 빌드 로직 모듈에서 로컬 속성을 읽기 위한 전용 유틸리티로 설계되었습니다. 현재 구현은 리소스 관리도 적절히 처리하고 있습니다.Likely an incorrect or invalid review comment.
gradle/libs.versions.toml (4)
25-35: Room 2.8.4 버전 업데이트 확인 필요 (마이그레이션 검토는 2.8.0 변경사항 기준)Room 2.8.4는 버그 수정 버전입니다. 주요 변경사항은 Room 2.8.0에서 발생했습니다 (minSdk 23 이상 필요, room-sqlite-wrapper 추가, SQLiteDriver API 추가, AGP 요구사항 상향). 기존 2.8.x 버전에서 업데이트하는 경우 추가 마이그레이션은 필요 없습니다. 이전 버전 (2.7.x 이하)에서 업그레이드하는 경우에만 Room 2.8.0의 마이그레이션 가이드를 검토하세요.
12-14: 의존성 버전 업데이트가 적절합니다.Hilt 2.57.2, Dagger 2.57.2, Firebase BOM 34.7.0의 버전 업데이트가 일관성 있게 진행되고 있으며, 알려진 보안 취약점이 없습니다.
43-46: Retrofit 3.0.0과 OkHttp 5.3.2 버전 호환성 문제를 검토하세요.Retrofit 3.0.0은 OkHttp 4.12를 기본으로 사용하지만, gradle에서 명시적으로 okhttp 5.3.2를 지정하고 있습니다. OkHttp 5.x는 메이저 업데이트로
RequestBody.create()호출 순서,Response.trailers()동작, Kotlin Duration API 등의 변경사항이 있습니다.현재 코드베이스에서는
String.toRequestBody(),ByteArray.toRequestBody()와 같은 확장 함수를 사용하므로 OkHttp 5.3.2와 호환되지만, Retrofit 3.0.0이 예상하는 OkHttp 4.12 버전과 실제 사용 버전 간의 불일치로 인한 런타임 호환성 문제가 발생할 수 있습니다. Retrofit 3.0.0을 사용할 경우 해당 버전에 맞는 OkHttp 버전을 사용하거나, 버전 명시적 오버라이드의 필요성을 재검토하세요.
67-68: Compose 관련 버전 업데이트가 일관되게 적용되었습니다.Compose BOM 2025.12.01에 매핑된 Compose UI 1.10.0과 Kotlin 2.2.0 기반의 Compose 컴파일러 플러그인이 올바르게 구성되었습니다.
gradle/wrapper/gradle-wrapper.properties (1)
4-4: Gradle 8.13은 공식 릴리스이며 호환성이 확인되었습니다.Gradle 8.13은 2025년 2월 25일에 공식 릴리스되었으며, Android Gradle Plugin 8.13과의 호환성이 검증되었습니다. AGP 8.13에서 요구하는 기본 Gradle 버전이 바로 8.13이므로 이 버전 조합은 의도된 사양입니다.
build.gradle.kts (1)
11-11: 버전 카탈로그 정의 및 호환성 확인됨
libs.plugins.compose.compiler는gradle/libs.versions.toml에 올바르게 정의되어 있으며, Kotlin 2.2.0과 호환됩니다. 플러그인 선언 구문과apply false패턴이 올바르게 적용되었습니다.
| val properties = getLocalProperties(rootDir) | ||
| BuildConfigScope { name, key -> | ||
| val value = properties.getProperty(key) | ||
| buildConfigField("String", name, value) | ||
| val rawValue = properties.getProperty(key) ?: "" | ||
| val cleanedValue = rawValue.removeSurrounding("\"") | ||
|
|
||
| buildConfigField("String", name, "\"$cleanedValue\"") | ||
| }.apply(block) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
cat -n "build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt"Repository: Team-WSS/WSS-Android
Length of output: 1954
🏁 Script executed:
# local.properties 파일 검색
fd -t f "local.properties" -o "local.properties.example"Repository: Team-WSS/WSS-Android
Length of output: 231
🏁 Script executed:
# git history에서 이전 버전 확인
git log --oneline -n 20 -- "build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt"Repository: Team-WSS/WSS-Android
Length of output: 87
🏁 Script executed:
# trim('"')과 관련된 코드 검색
rg "trim.*\(" "build-logic/src/main/kotlin/com/into/websoso/"Repository: Team-WSS/WSS-Android
Length of output: 200
🏁 Script executed:
git show --stat 5a46a944Repository: Team-WSS/WSS-Android
Length of output: 50376
🏁 Script executed:
git show 5a46a944 -- "build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt"Repository: Team-WSS/WSS-Android
Length of output: 2066
🏁 Script executed:
# 코드에서 실제로 다른 처리 방식 확인
rg "removeSurrounding|trim" "build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt"Repository: Team-WSS/WSS-Android
Length of output: 250
🏁 Script executed:
# 이 파일을 사용하는 곳에서 local.properties 형식 확인
rg "buildConfigs|getLocalProperty" --type kotlin -A 2 -B 2 | head -50Repository: Team-WSS/WSS-Android
Length of output: 2861
파일 내 따옴표 처리 방식의 불일치를 수정하세요.
이 파일은 새로 추가되었으나, buildConfigs() 함수들(라인 27, 40)에서는 removeSurrounding("\"") 를 사용하고, getLocalProperty() 함수(라인 49)에서는 trim('"')를 사용하고 있습니다. 두 방식의 동작이 다르므로 일관된 방식으로 통일해야 합니다.
removeSurrounding("\""): 양쪽 모두 따옴표로 감싸진 경우만 제거trim('"'): 앞뒤 따옴표 문자를 모두 제거 (불완전한 따옴표 처리 가능)
🤖 Prompt for AI Agents
In @build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt around
lines 24 - 30, The code uses two different quote-stripping behaviors; unify them
by choosing one approach and applying it consistently: either replace
removeSurrounding("\"") in the buildConfigs() implementations with trim('"') to
allow trimming unmatched quotes, or change getLocalProperty() to use
removeSurrounding("\"") if you want to only drop enclosing pairs; update all
occurrences (buildConfigs(), getLocalProperty(), and any other helpers) to the
chosen method so quote handling is consistent across BuildConfigExtensions.kt.
| android-gradle-plugin = "8.13.2" | ||
| kotlin = "2.2.0" | ||
| serialization = "1.9.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
Android Gradle Plugin 8.13.2 release notes Kotlin 2.2.0 compatibility
💡 Result:
Short answer: AGP 8.13.2 is not officially compatible with Kotlin 2.2.0. The Kotlin compatibility table indicates Kotlin 2.2.0–2.2.10 is supported up to AGP 8.10.0; AGP 8.13.x targets Kotlin 2.3+. Recommend upgrading Kotlin to 2.3+ or downgrading AGP to ≤8.10 if you must stay on Kotlin 2.2.0. [1][2]
Sources:
[1] Android Gradle plugin 8.13.2 release notes — Android Developers.
[2] Kotlin Multiplatform / version compatibility table — Kotlin documentation.
🌐 Web query:
Kotlin 2.2.0 release notes breaking changes
💡 Result:
Key breaking changes in Kotlin 2.2.0 (summary):
- Language versions < 1.8 no longer supported: the compiler drops support for -language-version=1.6 and 1.7 (feature sets older than 1.8 aren’t supported). [1]
- JVM default-method generation changed: interface functions are compiled to JVM default methods by default (new stable -jvm-default option replaces -Xjvm-default; modes: enable (default), no-compatibility, disable). This affects bytecode and binary compatibility/bridges. [1]
- Gradle DSL change: kotlinOptions { } is now an error; migrate to compilerOptions { } (Gradle DSL for compiler options changed). [1]
- Ant support deprecated (planned removal in a future 2.3.0): Ant build integration is deprecated. [1]
- Scripting focus narrowed: changes/deprecations to Kotlin scripting support (migration for some script use-cases). [1]
Sources: Kotlin “What’s new in 2.2.0” and Kotlin Blog announcement. [1][2]
References
[1] Kotlin — What’s new in Kotlin 2.2.0 (release notes / breaking changes).
[2] Kotlin Blog — “Kotlin 2.2.0 Released”.
🌐 Web query:
Android Gradle Plugin 8.13.2 stability requirements
💡 Result:
Short answer: AGP 8.13.2 requires Gradle 8.13 (minimum) and a JDK 17 runtime to run builds. Use the matching Gradle wrapper (gradle 8.13) and ensure your Gradle/IDE JDK (or org.gradle.java.home) points to JDK 17. [1][2]
Sources:
- Android Gradle plugin release notes (AGP 8.13 → minimum Gradle 8.13). [1]
- Java versions in Android builds (AGP 8.x requires JDK 17). [2]
Android Gradle Plugin 8.13.2와 Kotlin 2.2.0는 호환되지 않습니다. 즉시 해결이 필요합니다.
공식 호환성 테이블에 따르면 Kotlin 2.2.0–2.2.10은 AGP 8.10.0까지만 지원되며, AGP 8.13.x는 Kotlin 2.3 이상을 요구합니다. 현재 구성은 컴파일 오류나 런타임 문제를 유발할 수 있습니다. Kotlin을 2.3 이상으로 업그레이드하거나, 반드시 Kotlin 2.2.0을 사용해야 한다면 AGP를 8.10 이하로 다운그레이드하세요.
추가로 Kotlin 2.2.0의 주요 변경 사항도 확인이 필요합니다:
kotlinOptions { }DSL이 더 이상 작동하지 않음 (반드시compilerOptions { }로 마이그레이션 필요)- JVM 기본 메서드 생성 방식 변경으로 인한 바이너리 호환성 영향
- Kotlin 1.8 미만의 언어 버전 지원 중단
🤖 Prompt for AI Agents
In @gradle/libs.versions.toml around lines 7 - 9, 현재 gradle/libs.versions.toml의
android-gradle-plugin, kotlin, serialization 버전 조합이 호환되지 않습니다:
android-gradle-plugin = "8.13.2"은 Kotlin 2.3 이상을 요구하므로 kotlin = "2.2.0"을 즉시
업그레이드하거나 AGP를 8.10 이하로 내리세요; 구체적으로 libs.versions.toml의 kotlin 항목(kotlin) 값을
2.3.x 이상으로 올리거나 android-gradle-plugin 항목(android-gradle-plugin)을 8.10.x 이하로
다운그레이드하고, 변경 후 빌드 스크립트에서 kotlinOptions → compilerOptions 마이그레이션 필요 여부와 바이너리 호환성
영향을 점검하세요.
📌𝘐𝘴𝘴𝘶𝘦𝘴
📎𝘞𝘰𝘳𝘬 𝘋𝘦𝘴𝘤𝘳𝘪𝘱𝘵𝘪𝘰𝘯
주요 변경 사항 요약
🚀 Build Environment (Kotlin & Gradle)
Android Gradle Plugin (AGP): 8.1.3 → 8.13.2
Kotlin: 1.9.0 → 2.2.0
Compose Compiler: Kotlin 2.0+ 통합에 따라 별도 플러그인 방식으로 전환
📱 AndroidX & UI
Core-KTX: 1.9.0 → 1.15.0 (SDK 36 강제 방지를 위한 1.15.0 고정)
Fragment-KTX: 1.6.1 → 1.8.5
AppCompat: 1.6.1 → 1.7.1
Material: 1.11.0 → 1.13.0
ConstraintLayout: 2.1.4 → 2.2.1
Room: 2.6.1 → 2.8.4
🔗 Networking & Coroutines
Retrofit: 2.11.0 → 3.0.0
OkHttp: 4.11.0 → 5.3.2
Coroutines: 1.6.4 → 1.10.2
Serialization: 1.5.1 → 1.9.0
💉 Dependency Injection (Hilt)
Hilt/Dagger: 2.48 → 2.57.2
Hilt Navigation Compose: 1.2.0 → 1.3.0
✨ Jetpack Compose
Compose BOM: 2024.12.01 → 2025.12.01
Compose UI: 1.7.6 → 1.10.0
📊 Firebase & Analytics & Etc
Firebase BOM: 33.7.0 → 34.7.0
Kakao SDK: 2.15.0 → 2.23.1
Lottie: 5.0.2 → 6.7.1
Ktlint: 12.1.0 → 14.0.1
체크리스트
주의 사항
androidx.core:core-ktx를 1.17.0으로 올릴 경우 Compile SDK 36이 강제되므로, 차후 SDK 업데이트 전까지는 1.15.0 버전을 유지해야 합니다.