From 1a4fe34a51c81150a6d6f684e481a99c3e9a6faf Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Fri, 7 Nov 2025 14:39:27 +0900 Subject: [PATCH 1/9] =?UTF-8?q?[REFACTOR/#266]=20OrbitColors=EB=8A=94=20?= =?UTF-8?q?=EB=82=B4=EB=B6=80=20=EC=83=81=ED=83=9C=EA=B0=92=EC=9D=B4=20?= =?UTF-8?q?=EC=B6=94=EC=A0=81=EB=90=98=EA=B8=B0=20=EB=95=8C=EB=AC=B8?= =?UTF-8?q?=EC=97=90=20Stable=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/yapp/designsystem/theme/OrbitColors.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/designsystem/src/main/java/com/yapp/designsystem/theme/OrbitColors.kt b/core/designsystem/src/main/java/com/yapp/designsystem/theme/OrbitColors.kt index 186fa8df..4af827bd 100644 --- a/core/designsystem/src/main/java/com/yapp/designsystem/theme/OrbitColors.kt +++ b/core/designsystem/src/main/java/com/yapp/designsystem/theme/OrbitColors.kt @@ -1,11 +1,13 @@ package com.yapp.designsystem.theme +import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.graphics.Color +@Stable class OrbitColors( main: Color = Color(0xFFFEFF65), sub_main: Color = Color(0xFFFDFE90), From c85d579d3654e1adb699786c18dc6aece5e44288 Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Fri, 7 Nov 2025 14:53:57 +0900 Subject: [PATCH 2/9] =?UTF-8?q?[REFACTOR/#266]=20OrbitNavigator=EB=8A=94?= =?UTF-8?q?=20NavHostController=EA=B0=80=20=EB=82=B4=EB=B6=80=EC=A0=81?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=83=81=ED=83=9C=EB=A5=BC=20=EC=B6=94?= =?UTF-8?q?=EC=A0=81=ED=95=98=EB=AF=80=EB=A1=9C=20Stable=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/yapp/common/navigation/OrbitNavigator.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/common/src/main/java/com/yapp/common/navigation/OrbitNavigator.kt b/core/common/src/main/java/com/yapp/common/navigation/OrbitNavigator.kt index ec884f97..2a8c2df0 100644 --- a/core/common/src/main/java/com/yapp/common/navigation/OrbitNavigator.kt +++ b/core/common/src/main/java/com/yapp/common/navigation/OrbitNavigator.kt @@ -2,6 +2,7 @@ package com.yapp.common.navigation import android.util.Log import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable import androidx.compose.runtime.remember import androidx.navigation.NavHostController import androidx.navigation.NavOptions @@ -20,6 +21,7 @@ import com.yapp.common.navigation.route.SplashRoute import com.yapp.common.navigation.route.WebViewRoute import com.yapp.domain.model.Alarm +@Stable class OrbitNavigator( val navController: NavHostController, ) { From cfa5e4338a66367c78d392d59b5ffc145869467d Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Fri, 7 Nov 2025 15:13:35 +0900 Subject: [PATCH 3/9] =?UTF-8?q?[CHORE/#266]=20stability=20analyzer=20?= =?UTF-8?q?=ED=94=8C=EB=9F=AC=EA=B7=B8=EC=9D=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yapp/convention/ComposeAndroid.kt | 1 + build.gradle.kts | 1 + core/network/build.gradle.kts | 1 - gradle/libs.versions.toml | 14 +++++++------- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/build-logic/src/main/java/com/yapp/convention/ComposeAndroid.kt b/build-logic/src/main/java/com/yapp/convention/ComposeAndroid.kt index f705f061..da07667d 100644 --- a/build-logic/src/main/java/com/yapp/convention/ComposeAndroid.kt +++ b/build-logic/src/main/java/com/yapp/convention/ComposeAndroid.kt @@ -8,6 +8,7 @@ import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginE internal fun Project.configureComposeAndroid() { with(plugins) { apply("org.jetbrains.kotlin.plugin.compose") + apply("com.github.skydoves.compose.stability.analyzer") } val libs = extensions.libs diff --git a/build.gradle.kts b/build.gradle.kts index 3f1d3f7f..01648063 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,6 +13,7 @@ plugins { alias(libs.plugins.google.service) apply false alias(libs.plugins.firebase.app.distribution) apply false alias(libs.plugins.firebase.crashlytics) apply false + alias(libs.plugins.stability.analyzer) apply false } apply { diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index beabc390..86e0b160 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -18,5 +18,4 @@ dependencies { implementation(libs.retrofit.kotlin.serialization) implementation(libs.okhttp.logging) implementation(libs.kotlinx.serialization.json) - implementation(libs.process.phoenix) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2d1248b6..b1916ef2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,13 +13,13 @@ versionCode = "1" android-gradle-plugin = "8.7.2" ## Kotlin Symbol Processing -ksp = "2.0.0-1.0.22" +ksp = "2.2.21-2.0.4" ## Formatting Plugins ktlint = "11.5.1" ## Kotlin Versions -kotlin = "2.0.0" +kotlin = "2.2.21" kotlinx-serialization-json = "1.7.0" kotlinx-coroutines = "1.9.0-RC" kotlinx-collections = "0.3.7" @@ -43,9 +43,9 @@ compose-ui = "1.7.6" activity-compose = "1.9.3" ## Hilt -hilt = "2.51.1" -hilt-navigation-compose = "1.2.0" -hilt-work = "1.2.0" +hilt = "2.57.2" +hilt-navigation-compose = "1.3.0" +hilt-work = "1.3.0" ## Third Party okhttp = "4.12.0" @@ -74,11 +74,11 @@ timber = "5.0.1" orbit = "6.1.0" espressoCore = "3.6.1" material = "1.12.0" -process-pheonix = "3.0.0" lottie = "6.1.0" accompanist = "0.37.0" materialAndroid = "1.7.5" amplitude = "1.20.3" +stability-analyzer = "0.4.2" [libraries] @@ -170,7 +170,6 @@ androidx-test-core = { group = "androidx.test", name = "core", version.ref = "an androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } -process-phoenix = { module = "com.jakewharton:process-phoenix", version.ref = "process-pheonix" } lottie-compose = { group = "com.airbnb.android", name = "lottie-compose", version.ref= "lottie" } accompanist-permission = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } androidx-material-android = { group = "androidx.compose.material", name = "material-android", version.ref = "materialAndroid" } @@ -196,3 +195,4 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = " google-service = { id = "com.google.gms.google-services", version.ref = "google-service" } firebase-app-distribution = { id = "com.google.firebase.appdistribution", version.ref = "firebase-app-distribution" } firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebase-crashlytics" } +stability-analyzer = { id = "com.github.skydoves.compose.stability.analyzer", version.ref = "stability-analyzer" } From dc4dde5e533f0765f6969a4008b3d33892039ddf Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Fri, 7 Nov 2025 16:13:04 +0900 Subject: [PATCH 4/9] =?UTF-8?q?[REFACTOR/#266]=20OrbitBottomSheetState?= =?UTF-8?q?=EB=8A=94=20=EB=82=B4=EB=B6=80=EC=A0=81=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=EB=A5=BC=20=EC=B6=94=EC=A0=81=ED=95=98?= =?UTF-8?q?=EB=AF=80=EB=A1=9C=20Stable=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yapp/ui/component/bottomsheet/OrbitBottomSheetState.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/ui/src/main/java/com/yapp/ui/component/bottomsheet/OrbitBottomSheetState.kt b/core/ui/src/main/java/com/yapp/ui/component/bottomsheet/OrbitBottomSheetState.kt index b558e1d8..3c09c74b 100644 --- a/core/ui/src/main/java/com/yapp/ui/component/bottomsheet/OrbitBottomSheetState.kt +++ b/core/ui/src/main/java/com/yapp/ui/component/bottomsheet/OrbitBottomSheetState.kt @@ -4,6 +4,7 @@ import androidx.compose.material.ModalBottomSheetState import androidx.compose.material.ModalBottomSheetValue import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -32,6 +33,7 @@ fun rememberOrbitBottomSheetState(): OrbitBottomSheetState { } } +@Stable class OrbitBottomSheetState( val state: ModalBottomSheetState, val contentState: State, From f8953e74aa4bb5802792cdd74ebf548d28ee5714 Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Fri, 7 Nov 2025 17:58:41 +0900 Subject: [PATCH 5/9] =?UTF-8?q?[REFACTOR/#266]=20graphicsLayer=20=EB=9E=8C?= =?UTF-8?q?=EB=8B=A4=20=EB=B8=94=EB=A1=9D=20=EC=95=88=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=ED=85=9C=EC=9D=98=20alpha=EC=99=80=20scaleY?= =?UTF-8?q?=EB=A5=BC=20=EA=B3=84=EC=82=B0=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=ED=95=B4=EC=84=9C=20OrbitPickerItem=20=EB=A6=AC=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EC=A7=80=EC=85=98=20=EC=B5=9C=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/timepicker/OrbitPickerItem.kt | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt b/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt index 729421a2..6b646a8b 100644 --- a/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt +++ b/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember @@ -27,7 +26,6 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.yapp.designsystem.theme.OrbitTheme -import com.yapp.ui.utils.toPx import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map import kotlin.math.abs @@ -113,25 +111,6 @@ fun OrbitPickerItem( .pointerInput(Unit) { detectVerticalDragGestures { change, _ -> change.consume() } }, ) { items(listScrollCount, key = { index -> index }) { index -> - val layoutInfo by remember { derivedStateOf { listState.layoutInfo } } - - val viewportCenterOffset = layoutInfo.viewportStartOffset + - (layoutInfo.viewportEndOffset - layoutInfo.viewportStartOffset) / 2 - - val itemInfo = layoutInfo.visibleItemsInfo.find { it.index == index } - val itemCenterOffset = itemInfo?.offset?.let { it + (itemInfo.size / 2) } ?: 0 - - val distanceFromCenter = abs(viewportCenterOffset - itemCenterOffset) - val maxDistance = totalItemHeight.toPx() * visibleItemsMiddle - - val alpha = if (distanceFromCenter <= maxDistance) { - ((maxDistance - distanceFromCenter) / maxDistance).coerceIn(0.2f, 1f) - } else { - 0.2f - } - - val scaleY = 1f - (0.2f * (distanceFromCenter / maxDistance)).coerceIn(0f, 0.4f) - val item = getItemForIndex( index = index, items = items, @@ -143,10 +122,29 @@ fun OrbitPickerItem( text = item?.let { itemFormatter(it) } ?: "", maxLines = 1, style = textStyle, - color = OrbitTheme.colors.white.copy(alpha = alpha), + color = OrbitTheme.colors.white, modifier = Modifier .padding(vertical = itemSpacing / 2) - .graphicsLayer(scaleY = scaleY) + .graphicsLayer { + val layoutInfo = listState.layoutInfo + + val viewportCenterOffset = layoutInfo.viewportStartOffset + + (layoutInfo.viewportEndOffset - layoutInfo.viewportStartOffset) / 2 + + val itemInfo = layoutInfo.visibleItemsInfo.find { it.index == index } + val itemCenterOffset = itemInfo?.offset?.let { it + (itemInfo.size / 2) } ?: 0 + + val distanceFromCenter = abs(viewportCenterOffset - itemCenterOffset) + val maxDistance = totalItemHeight.toPx() * visibleItemsMiddle + + alpha = if (distanceFromCenter <= maxDistance) { + ((maxDistance - distanceFromCenter) / maxDistance).coerceIn(0.2f, 1f) + } else { + 0.2f + } + + scaleY = 1f - (0.2f * (distanceFromCenter / maxDistance)).coerceIn(0f, 0.4f) + } .onSizeChanged { size -> itemHeightPixels = size.height } .then(textModifier), ) From 8a2346cadfcdb36c01692bd932c357f511ac7b2f Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Fri, 7 Nov 2025 18:02:39 +0900 Subject: [PATCH 6/9] =?UTF-8?q?[REFACTOR/#266]=20OrbitPickerItem,=20Picker?= =?UTF-8?q?State=20Stable=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt | 2 ++ .../main/java/com/yapp/ui/component/timepicker/PickerState.kt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt b/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt index 6b646a8b..8c32ee89 100644 --- a/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt +++ b/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt @@ -10,6 +10,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember @@ -30,6 +31,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map import kotlin.math.abs +@Stable @Composable fun OrbitPickerItem( modifier: Modifier = Modifier, diff --git a/core/ui/src/main/java/com/yapp/ui/component/timepicker/PickerState.kt b/core/ui/src/main/java/com/yapp/ui/component/timepicker/PickerState.kt index 2e8b9793..2c7914e9 100644 --- a/core/ui/src/main/java/com/yapp/ui/component/timepicker/PickerState.kt +++ b/core/ui/src/main/java/com/yapp/ui/component/timepicker/PickerState.kt @@ -3,10 +3,12 @@ package com.yapp.ui.component.timepicker import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable import androidx.compose.runtime.remember import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +@Stable class PickerState( val lazyListState: LazyListState, val initialIndex: Int, From bc8dcea59932dfdc8d8284f47d3722c490681648 Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Sat, 8 Nov 2025 22:52:08 +0900 Subject: [PATCH 7/9] =?UTF-8?q?[FIX/#266]=20OrbitPickerItem=EC=97=90?= =?UTF-8?q?=EC=84=9C=20maxDistance=EA=B0=80=200=20=EC=9D=B4=ED=95=98?= =?UTF-8?q?=EC=9D=BC=20=EB=95=8C=20=EB=B0=9C=EC=83=9D=ED=95=98=EB=8A=94=20?= =?UTF-8?q?ArithmeticException=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yapp/ui/component/timepicker/OrbitPickerItem.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt b/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt index 8c32ee89..34c4246b 100644 --- a/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt +++ b/core/ui/src/main/java/com/yapp/ui/component/timepicker/OrbitPickerItem.kt @@ -139,6 +139,12 @@ fun OrbitPickerItem( val distanceFromCenter = abs(viewportCenterOffset - itemCenterOffset) val maxDistance = totalItemHeight.toPx() * visibleItemsMiddle + if (maxDistance <= 0f) { + alpha = 1f + scaleY = 1f + return@graphicsLayer + } + alpha = if (distanceFromCenter <= maxDistance) { ((maxDistance - distanceFromCenter) / maxDistance).coerceIn(0.2f, 1f) } else { From efd2b33e45bb52769181550e420ef128673b4f48 Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Sat, 8 Nov 2025 22:55:33 +0900 Subject: [PATCH 8/9] =?UTF-8?q?[CHORE/#266]=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EC=B9=B4=ED=83=88=EB=A1=9C=EA=B7=B8=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b1916ef2..c2dd2ace 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,12 @@ [versions] # SDK Versions -compileSdk = "34" +compileSdk = "35" minSdk = "28" -targetSdk = "34" -jdkVersion = "17" +targetSdk = "35" # App Versioning -versionName = "1.0.0" -versionCode = "1" +versionName = "1.1.3" +versionCode = "6" ## Android Gradle Plugin android-gradle-plugin = "8.7.2" @@ -74,11 +73,11 @@ timber = "5.0.1" orbit = "6.1.0" espressoCore = "3.6.1" material = "1.12.0" -lottie = "6.1.0" +lottie = "6.7.1" accompanist = "0.37.0" materialAndroid = "1.7.5" amplitude = "1.20.3" -stability-analyzer = "0.4.2" +stability-analyzer = "0.5.0" [libraries] From 1577cf02f9c89f2b0e3d9ce550a250782ba73e38 Mon Sep 17 00:00:00 2001 From: dongchyeon Date: Sat, 8 Nov 2025 23:35:00 +0900 Subject: [PATCH 9/9] =?UTF-8?q?[REFACTOR/#266]=20libs=20=ED=99=95=EC=9E=A5?= =?UTF-8?q?=20=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=EA=B0=80=20Project?= =?UTF-8?q?=EB=A5=BC=20=EC=B0=B8=EC=A1=B0=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 10 ++++++---- .../main/java/com/yapp/convention/ComposeAndroid.kt | 1 - .../main/java/com/yapp/convention/CoroutineAndroid.kt | 1 - .../src/main/java/com/yapp/convention/Extension.kt | 5 ++--- .../src/main/java/com/yapp/convention/HiltAndroid.kt | 1 - .../src/main/java/com/yapp/convention/HiltKotlin.kt | 1 - .../src/main/java/com/yapp/convention/KotlinAndroid.kt | 4 ++-- .../src/main/java/com/yapp/convention/TestAndroid.kt | 2 -- .../src/main/java/com/yapp/convention/TestCoverage.kt | 1 - .../src/main/java/com/yapp/convention/TestKotlin.kt | 1 - .../src/main/java/orbit.android.feature.gradle.kts | 1 - 11 files changed, 10 insertions(+), 18 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6c350ede..570e3265 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -8,12 +8,14 @@ plugins { android { namespace = "com.yapp.orbit" - compileSdk = 35 + compileSdk = libs.versions.compileSdk.get().toInt() defaultConfig { - versionCode = 6 - versionName = "1.1.3" - targetSdk = 35 + minSdk = libs.versions.minSdk.get().toInt() + targetSdk = libs.versions.targetSdk.get().toInt() + + versionCode = libs.versions.versionCode.get().toInt() + versionName = libs.versions.versionName.get() } buildTypes { diff --git a/build-logic/src/main/java/com/yapp/convention/ComposeAndroid.kt b/build-logic/src/main/java/com/yapp/convention/ComposeAndroid.kt index da07667d..3b3de5e7 100644 --- a/build-logic/src/main/java/com/yapp/convention/ComposeAndroid.kt +++ b/build-logic/src/main/java/com/yapp/convention/ComposeAndroid.kt @@ -11,7 +11,6 @@ internal fun Project.configureComposeAndroid() { apply("com.github.skydoves.compose.stability.analyzer") } - val libs = extensions.libs androidExtension.apply { dependencies { val bom = libs.findLibrary("compose.bom").get() diff --git a/build-logic/src/main/java/com/yapp/convention/CoroutineAndroid.kt b/build-logic/src/main/java/com/yapp/convention/CoroutineAndroid.kt index 1a8ec58c..52fd35a4 100644 --- a/build-logic/src/main/java/com/yapp/convention/CoroutineAndroid.kt +++ b/build-logic/src/main/java/com/yapp/convention/CoroutineAndroid.kt @@ -9,7 +9,6 @@ internal fun Project.configureCoroutine() { } private fun Project.addImplementation(libraryKey: String) { - val libs = extensions.libs dependencies { "implementation"(libs.findLibrary(libraryKey).get()) } diff --git a/build-logic/src/main/java/com/yapp/convention/Extension.kt b/build-logic/src/main/java/com/yapp/convention/Extension.kt index 3ebad57f..4408c796 100644 --- a/build-logic/src/main/java/com/yapp/convention/Extension.kt +++ b/build-logic/src/main/java/com/yapp/convention/Extension.kt @@ -6,7 +6,6 @@ import com.android.build.api.dsl.LibraryExtension import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalog import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.api.plugins.ExtensionContainer import org.gradle.kotlin.dsl.getByType import org.jetbrains.kotlin.konan.properties.Properties @@ -22,8 +21,8 @@ internal val Project.androidExtension: CommonExtension<*, *, *, *, *, *> .onFailure { println("Could not find Library or Application extension from this project") } .getOrThrow() -internal val ExtensionContainer.libs: VersionCatalog - get() = getByType().named("libs") +internal val Project.libs: VersionCatalog + get() = extensions.getByType().named("libs") internal fun CommonExtension<*, *, *, *, *, *>.addBuildConfigFields(project: Project) { val baseUrl = project.getLocalProperty("baseUrl", "https://default.example.com") diff --git a/build-logic/src/main/java/com/yapp/convention/HiltAndroid.kt b/build-logic/src/main/java/com/yapp/convention/HiltAndroid.kt index 15db09ff..dec5fc7a 100644 --- a/build-logic/src/main/java/com/yapp/convention/HiltAndroid.kt +++ b/build-logic/src/main/java/com/yapp/convention/HiltAndroid.kt @@ -10,7 +10,6 @@ internal fun Project.configureHiltAndroid() { apply("com.google.devtools.ksp") } - val libs = extensions.libs dependencies { "implementation"(libs.findLibrary("hilt.android").get()) "ksp"(libs.findLibrary("hilt.android.compiler").get()) diff --git a/build-logic/src/main/java/com/yapp/convention/HiltKotlin.kt b/build-logic/src/main/java/com/yapp/convention/HiltKotlin.kt index 46330dcc..c654dfdd 100644 --- a/build-logic/src/main/java/com/yapp/convention/HiltKotlin.kt +++ b/build-logic/src/main/java/com/yapp/convention/HiltKotlin.kt @@ -9,7 +9,6 @@ internal fun Project.configureHiltKotlin() { apply("com.google.devtools.ksp") } - val libs = extensions.libs dependencies { "implementation"(libs.findLibrary("hilt.core").get()) "ksp"(libs.findLibrary("hilt.compiler").get()) diff --git a/build-logic/src/main/java/com/yapp/convention/KotlinAndroid.kt b/build-logic/src/main/java/com/yapp/convention/KotlinAndroid.kt index b842ac37..f0b21aa2 100644 --- a/build-logic/src/main/java/com/yapp/convention/KotlinAndroid.kt +++ b/build-logic/src/main/java/com/yapp/convention/KotlinAndroid.kt @@ -15,10 +15,10 @@ internal fun Project.configureKotlinAndroid() { pluginManager.apply("org.jetbrains.kotlin.plugin.serialization") androidExtension.apply { - compileSdk = 34 + compileSdk = libs.findVersion("compileSdk").get().requiredVersion.toInt() defaultConfig { - minSdk = 28 + minSdk = libs.findVersion("minSdk").get().requiredVersion.toInt() } buildFeatures { diff --git a/build-logic/src/main/java/com/yapp/convention/TestAndroid.kt b/build-logic/src/main/java/com/yapp/convention/TestAndroid.kt index e4fcee6b..fa1a6124 100644 --- a/build-logic/src/main/java/com/yapp/convention/TestAndroid.kt +++ b/build-logic/src/main/java/com/yapp/convention/TestAndroid.kt @@ -12,7 +12,6 @@ internal fun Project.configureTestAndroid() { } internal fun Project.configureComposeUiTest() { - val libs = extensions.libs dependencies { "androidTestImplementation"(libs.findLibrary("compose-ui-test-junit4").get()) "debugImplementation"(libs.findLibrary("compose-ui-test-manifest").get()) @@ -24,7 +23,6 @@ internal fun Project.configureJUnitAndroid() { androidExtension.apply { defaultConfig { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } - val libs = extensions.libs dependencies { "androidTestImplementation"(libs.findLibrary("androidx-test-ext-junit").get()) "androidTestImplementation"(libs.findLibrary("androidx-test-runner").get()) diff --git a/build-logic/src/main/java/com/yapp/convention/TestCoverage.kt b/build-logic/src/main/java/com/yapp/convention/TestCoverage.kt index 70510798..5dd83030 100644 --- a/build-logic/src/main/java/com/yapp/convention/TestCoverage.kt +++ b/build-logic/src/main/java/com/yapp/convention/TestCoverage.kt @@ -13,7 +13,6 @@ import org.gradle.testing.jacoco.tasks.JacocoReport internal fun Project.configureTestCoverage() { pluginManager.apply("jacoco") - val libs = extensions.libs extensions.configure { toolVersion = libs.findVersion("jacoco").get().toString() } diff --git a/build-logic/src/main/java/com/yapp/convention/TestKotlin.kt b/build-logic/src/main/java/com/yapp/convention/TestKotlin.kt index 790833c0..efbf3db7 100644 --- a/build-logic/src/main/java/com/yapp/convention/TestKotlin.kt +++ b/build-logic/src/main/java/com/yapp/convention/TestKotlin.kt @@ -4,7 +4,6 @@ import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies internal fun Project.configureTestKotlin() { - val libs = extensions.libs dependencies { // JUnit4 단위 테스트 프레임워크 "testImplementation"(libs.findLibrary("junit4").get()) diff --git a/build-logic/src/main/java/orbit.android.feature.gradle.kts b/build-logic/src/main/java/orbit.android.feature.gradle.kts index 47d5c072..42b7094f 100644 --- a/build-logic/src/main/java/orbit.android.feature.gradle.kts +++ b/build-logic/src/main/java/orbit.android.feature.gradle.kts @@ -9,7 +9,6 @@ dependencies { implementation(project(":core:designsystem")) implementation(project(":core:ui")) - val libs = project.extensions.libs implementation(libs.findLibrary("compose-navigation").get()) implementation(libs.findLibrary("lifecycle-viewmodel").get()) implementation(libs.findLibrary("lifecycle-runtime").get())