Skip to content

Conversation

@s9hn
Copy link
Member

@s9hn s9hn commented Jan 10, 2026

📌𝘐𝘴𝘴𝘶𝘦𝘴

📎𝘞𝘰𝘳𝘬 𝘋𝘦𝘴𝘤𝘳𝘪𝘱𝘵𝘪𝘰𝘯

주요 변경 사항 요약

🚀 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

체크리스트

  • Compile SDK 35 환경에서 빌드 성공 여부 확인
  • Kotlin 2.2.0 컴파일러 및 Compose Compiler 플러그인 정상 작동 확인
  • local.properties 기반의 BuildField 생성 로직(따옴표 중복 이슈) 수정 완료
  • Hilt 컴파일 및 의존성 주입 테스트 완료

주의 사항

androidx.core:core-ktx를 1.17.0으로 올릴 경우 Compile SDK 36이 강제되므로, 차후 SDK 업데이트 전까지는 1.15.0 버전을 유지해야 합니다.

@coderabbitai
Copy link

coderabbitai bot commented Jan 10, 2026

요약

이 PR은 Kotlin Compose 컴파일러 플러그인 의존성을 추가하고, Android 구성 확장을 업데이트하며, Gradle, Kotlin, Firebase, AndroidX 등 포괄적인 의존성 버전을 업그레이드합니다.

변경사항

코호트 / 파일 변경 요약
빌드 플러그인 및 의존성 추가
build-logic/build.gradle.kts, build.gradle.kts
Kotlin Compose 컴파일러 Gradle 플러그인 의존성 및 플러그인 별칭 추가
로컬 프로퍼티 처리 리팩토링
build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt
getLocalProperties() 헬퍼 함수 도입으로 gradleLocalProperties() 대체; buildConfig 값 처리 로직 정리
프로젝트 확장 시그니처 업데이트
build-logic/src/main/kotlin/com/into/websoso/ProjectExtensions.kt
CommonExtension 제네릭 파라미터 증가(5개 → 6개); androidExtension.getOrThrow() 호출 추가
Compose 플러그인 적용
build-logic/src/main/kotlin/websoso.android.compose.gradle.kts
Kotlin Compose 플러그인 명시적 적용; 하드코딩된 kotlinCompilerExtensionVersion 제거
의존성 및 버전 대규모 업그레이드
gradle/libs.versions.toml
Gradle(8.0→8.13), Kotlin, Firebase, AndroidX, Retrofit(3.x), Coroutines, Ktlint 등 포괄적 버전 업데이트; Compose 컴파일러 플러그인 추가
Gradle 래퍼 업데이트
gradle/wrapper/gradle-wrapper.properties
Gradle 배포 버전 업그레이드(8.0 → 8.13)

예상 코드 리뷰 노력

🎯 3 (보통) | ⏱️ ~25분

관련 가능성 있는 PR

제안된 레이블

🍯 [FEAT], 🏹 궁사 명지

제안된 검토자

  • junseo511

🐰 버전들을 춤을 추며 올려주고
Compose는 새로운 플러그인으로 빛나고
Gradle도 함께 성장하여
우리의 빌드는 더 강해진다!
✨🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 주요 변경 사항과 부분적으로 관련되어 있습니다. '프로젝트 버전 개선'은 버전 업데이트라는 실질적 변경을 언급하지만, 전체 범위(Kotlin 2.2.0, Compose 플러그인 전환, 빌드 환경 개선 등)를 포괄하기에는 너무 광범위합니다.
Description check ✅ Passed PR 설명이 필수 템플릿을 잘 따르고 있습니다. 이슈 번호(#756), 상세한 작업 설명(주요 변경 사항 요약, 체크리스트, 주의 사항)이 포함되어 있어 검토자들이 변경 내용을 명확히 이해할 수 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot requested a review from m6z1 January 10, 2026 03:45
@s9hn s9hn changed the title build: 버전 업데이트 build: 프로젝트 버전 개선 Jan 10, 2026
@s9hn s9hn added ⚖️ 재상 세훈 전지적 세훈 시점 🚧 [BUILD] 빌드 업무 수정, 패키지 매니저 수정합니다. labels Jan 10, 2026
Copy link
Member

@m6z1 m6z1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@s9hn s9hn merged commit eae3f8b into develop Jan 10, 2026
1 of 3 checks passed
@s9hn s9hn deleted the build/756 branch January 10, 2026 03:49
Copy link

@coderabbitai coderabbitai bot left a 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

📥 Commits

Reviewing files that changed from the base of the PR and between af225d7 and 5a46a94.

📒 Files selected for processing (7)
  • build-logic/build.gradle.kts
  • build-logic/src/main/kotlin/com/into/websoso/BuildConfigExtensions.kt
  • build-logic/src/main/kotlin/com/into/websoso/ProjectExtensions.kt
  • build-logic/src/main/kotlin/websoso.android.compose.gradle.kts
  • build.gradle.kts
  • gradle/libs.versions.toml
  • gradle/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.compilergradle/libs.versions.toml에 올바르게 정의되어 있으며, Kotlin 2.2.0과 호환됩니다. 플러그인 선언 구문과 apply false 패턴이 올바르게 적용되었습니다.

Comment on lines +24 to 30
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)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 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 5a46a944

Repository: 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 -50

Repository: 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.

Comment on lines +7 to +9
android-gradle-plugin = "8.13.2"
kotlin = "2.2.0"
serialization = "1.9.0"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 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 마이그레이션 필요 여부와 바이너리 호환성
영향을 점검하세요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⚖️ 재상 세훈 전지적 세훈 시점 🚧 [BUILD] 빌드 업무 수정, 패키지 매니저 수정합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

build: 프로젝트 버전 개선

3 participants