From dfad3eec2a3b6dd6de9e0a11ea08418ca02fefb7 Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Tue, 24 Mar 2026 19:44:59 +0900 Subject: [PATCH 1/7] =?UTF-8?q?Chore:=20=EB=9D=BC=EC=9D=B4=EB=B8=8C?= =?UTF-8?q?=EB=9F=AC=EB=A6=AC=20=EB=B0=8F=20SDK=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - compileSdk/targetSdk 35 → 36 - AGP 8.10.1 → 9.1.0 - Kotlin 2.1.20 → 2.3.0, KSP 2.3.6 - Hilt 2.56.2 → 2.59.2 - Compose BOM 2025.06.00 → 2026.03.00 - 기타 AndroidX, Coroutines, Serialization 등 최신화 --- gradle/libs.versions.toml | 45 +++++++++++++----------- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3faa555b..7da83c16 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,9 @@ [versions] ## SDK versions -compileSdk = "35" +compileSdk = "36" minSdk = "28" -targetSdk = "35" +targetSdk = "36" +applicationId = "com.threegap.bitnagil" ## App Versioning versionCode = "7" @@ -11,33 +12,33 @@ versionMinor = "2" versionPatch = "0" # Android Gradle Plugin -androidGradlePlugin = "8.10.1" +androidGradlePlugin = "9.1.0" # Formatting Plugin ktlint = "11.3.2" # AndroidX -androidxCore = "1.16.0" -androidxLifecycle = "2.9.1" -androidxActivity = "1.10.1" -androidxDatastore = "1.1.7" +androidxCore = "1.18.0" +androidxLifecycle = "2.10.0" +androidxActivity = "1.13.0" +androidxDatastore = "1.2.1" androidxAppcompat = "1.7.1" # Kotlin -kotlin = "2.1.20" +kotlin = "2.3.0" kotlinxCoroutines = "1.10.2" -kotlinxSerializationJson = "1.8.1" +kotlinxSerializationJson = "1.10.0" # Ksp -ksp = "2.1.20-1.0.32" +ksp = "2.3.6" # Hilt -hilt = "2.56.2" -hiltNavigationCompose = "1.2.0" +hilt = "2.59.2" +hiltNavigationCompose = "1.3.0" # Compose -composeBom = "2025.06.00" -composeNavigation = "2.9.0" +composeBom = "2026.03.00" +composeNavigation = "2.9.7" # Network okhttp = "5.3.2" @@ -45,19 +46,19 @@ retrofit = "3.0.0" # Test junit = "4.13.2" -junitVersion = "1.2.1" -espressoCore = "3.6.1" +junitVersion = "1.3.0" +espressoCore = "3.7.0" ## app-update app-update = "2.1.0" ## Other -material = "1.12.0" -orbit = "10.0.0" +material = "1.13.0" +orbit = "11.0.0" javax = "1" -kakaoLogin = "2.21.4" -lottie-compose = "6.6.0" -coil = "3.3.0" +kakaoLogin = "2.23.2" +lottie-compose = "6.7.1" +coil = "3.4.0" accompanist = "0.37.3" playServicesLocation = "21.3.0" @@ -220,3 +221,5 @@ bitnagil-android-library = { id = "bitnagil.android.library", version = "unspeci bitnagil-android-compose-library = { id = "bitnagil.android.compose.library", version = "unspecified" } bitnagil-android-hilt = { id = "bitnagil.android.hilt", version = "unspecified" } bitnagil-kotlin = { id = "bitnagil.kotlin", version = "unspecified" } +bitnagil-kotlin-serialization = { id = "bitnagil.kotlin.serialization", version = "unspecified" } +bitnagil-kotlin-parcelize = { id = "bitnagil.kotlin.parcelize", version = "unspecified" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 10c76e44..ce0f01d6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed Jun 04 01:26:12 KST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 482e60ac925f91b63eb2354d4861743ea42a6038 Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Tue, 24 Mar 2026 19:45:37 +0900 Subject: [PATCH 2/7] =?UTF-8?q?Refactor:=20Convention=20Plugin=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ApplicationId.kt 삭제, Extensions.kt 추가하여 namespace 자동 계산 로직 통합 - KotlinSerializationPlugin, KotlinParcelizePlugin 신규 추가 - AppVersion: ApplicationExtension 파라미터 직접 전달 방식으로 변경, LibraryExtension의 불필요한 버전 BuildConfig 필드 제거 - ktlint를 allprojects 대신 각 convention plugin에서 적용하도록 이전 - 각 모듈 build.gradle.kts에서 namespace 명시 제거 (자동 계산으로 대체) --- build-logic/convention/build.gradle.kts | 10 +++ .../convention/AndroidApplicationPlugin.kt | 13 ++-- .../convention/AndroidComposePlugin.kt | 2 +- .../convention/AndroidLibraryPlugin.kt | 10 +-- .../bitnagil/convention/HiltPlugin.kt | 4 +- .../bitnagil/convention/KotlinJvmPlugin.kt | 1 + .../convention/KotlinParcelizePlugin.kt | 10 +++ .../convention/KotlinSerializationPlugin.kt | 16 +++++ .../convention/extension/AppVersion.kt | 33 ++------- .../convention/extension/ApplicationId.kt | 27 ------- .../convention/extension/ComposeAndroid.kt | 30 ++++---- .../convention/extension/Extensions.kt | 15 ++++ .../convention/extension/KotlinAndroid.kt | 70 +++++++------------ .../convention/extension/KotlinCoroutine.kt | 12 +--- build.gradle.kts | 7 -- core/datastore/build.gradle.kts | 4 -- core/designsystem/build.gradle.kts | 7 +- core/network/build.gradle.kts | 4 -- core/security/build.gradle.kts | 4 -- domain/build.gradle.kts | 3 +- 20 files changed, 112 insertions(+), 170 deletions(-) create mode 100644 build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinParcelizePlugin.kt create mode 100644 build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinSerializationPlugin.kt delete mode 100644 build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ApplicationId.kt create mode 100644 build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/Extensions.kt diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 440de1fb..2b0bdb84 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -46,5 +46,15 @@ gradlePlugin { id = "bitnagil.kotlin" implementationClass = "com.threegap.bitnagil.convention.KotlinJvmPlugin" } + + register("kotlinSerialization") { + id = "bitnagil.kotlin.serialization" + implementationClass = "com.threegap.bitnagil.convention.KotlinSerializationPlugin" + } + + register("kotlinParcelize") { + id = "bitnagil.kotlin.parcelize" + implementationClass = "com.threegap.bitnagil.convention.KotlinParcelizePlugin" + } } } diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidApplicationPlugin.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidApplicationPlugin.kt index 9e628f0d..459b8efb 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidApplicationPlugin.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidApplicationPlugin.kt @@ -1,33 +1,30 @@ package com.threegap.bitnagil.convention import com.android.build.api.dsl.ApplicationExtension +import com.threegap.bitnagil.convention.extension.basePackage import com.threegap.bitnagil.convention.extension.configureAppVersion -import com.threegap.bitnagil.convention.extension.configureApplicationId import com.threegap.bitnagil.convention.extension.configureComposeAndroid import com.threegap.bitnagil.convention.extension.configureKotlinAndroid +import com.threegap.bitnagil.convention.extension.libs import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.configure class AndroidApplicationPlugin : Plugin { override fun apply(target: Project): Unit = with(target) { pluginManager.apply { apply("com.android.application") - apply("org.jetbrains.kotlin.android") apply("org.jetbrains.kotlin.plugin.compose") + apply("org.jlleitschuh.gradle.ktlint") } - val libs = extensions.getByType().named("libs") extensions.configure { configureKotlinAndroid(this) configureComposeAndroid(this) - configureAppVersion() - configureApplicationId() + configureAppVersion(this) with(defaultConfig) { + applicationId = basePackage targetSdk = libs.findVersion("targetSdk").get().requiredVersion.toInt() - versionCode = libs.findVersion("versionCode").get().requiredVersion.toInt() } } } diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidComposePlugin.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidComposePlugin.kt index a68c09c6..c94079b4 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidComposePlugin.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidComposePlugin.kt @@ -1,6 +1,6 @@ package com.threegap.bitnagil.convention -import com.android.build.gradle.LibraryExtension +import com.android.build.api.dsl.LibraryExtension import com.threegap.bitnagil.convention.extension.configureComposeAndroid import org.gradle.api.Plugin import org.gradle.api.Project diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidLibraryPlugin.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidLibraryPlugin.kt index b3504c54..6a3c1746 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidLibraryPlugin.kt @@ -1,8 +1,6 @@ package com.threegap.bitnagil.convention -import com.android.build.gradle.LibraryExtension -import com.threegap.bitnagil.convention.extension.configureAppVersion -import com.threegap.bitnagil.convention.extension.configureApplicationId +import com.android.build.api.dsl.LibraryExtension import com.threegap.bitnagil.convention.extension.configureKotlinAndroid import com.threegap.bitnagil.convention.extension.configureKotlinCoroutine import org.gradle.api.Plugin @@ -13,14 +11,12 @@ class AndroidLibraryPlugin : Plugin { override fun apply(target: Project): Unit = with(target) { pluginManager.apply { apply("com.android.library") - apply("org.jetbrains.kotlin.android") + apply("org.jlleitschuh.gradle.ktlint") } extensions.configure { configureKotlinAndroid(this) - configureKotlinCoroutine(this) - configureAppVersion() - configureApplicationId() + configureKotlinCoroutine() } } } diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/HiltPlugin.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/HiltPlugin.kt index 7cfb8942..4fac2f4a 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/HiltPlugin.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/HiltPlugin.kt @@ -1,10 +1,9 @@ package com.threegap.bitnagil.convention +import com.threegap.bitnagil.convention.extension.libs import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.getByType class HiltPlugin : Plugin { override fun apply(target: Project): Unit = with(target) { @@ -13,7 +12,6 @@ class HiltPlugin : Plugin { apply("com.google.devtools.ksp") } - val libs = extensions.getByType().named("libs") dependencies { "implementation"(libs.findLibrary("hilt.android").get()) "ksp"(libs.findLibrary("hilt.compiler").get()) diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinJvmPlugin.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinJvmPlugin.kt index 7308a7f1..d1042795 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinJvmPlugin.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinJvmPlugin.kt @@ -13,6 +13,7 @@ class KotlinJvmPlugin : Plugin { pluginManager.apply { apply("java-library") apply("org.jetbrains.kotlin.jvm") + apply("org.jlleitschuh.gradle.ktlint") } } diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinParcelizePlugin.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinParcelizePlugin.kt new file mode 100644 index 00000000..988e7362 --- /dev/null +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinParcelizePlugin.kt @@ -0,0 +1,10 @@ +package com.threegap.bitnagil.convention + +import org.gradle.api.Plugin +import org.gradle.api.Project + +class KotlinParcelizePlugin : Plugin { + override fun apply(target: Project): Unit = with(target) { + pluginManager.apply("org.jetbrains.kotlin.plugin.parcelize") + } +} diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinSerializationPlugin.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinSerializationPlugin.kt new file mode 100644 index 00000000..14636de3 --- /dev/null +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinSerializationPlugin.kt @@ -0,0 +1,16 @@ +package com.threegap.bitnagil.convention + +import com.threegap.bitnagil.convention.extension.libs +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class KotlinSerializationPlugin : Plugin { + override fun apply(target: Project): Unit = with(target) { + pluginManager.apply("org.jetbrains.kotlin.plugin.serialization") + + dependencies { + "implementation"(libs.findLibrary("kotlinx-serialization-json").get()) + } + } +} diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/AppVersion.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/AppVersion.kt index e9b9613d..ab3dbb04 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/AppVersion.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/AppVersion.kt @@ -1,37 +1,18 @@ package com.threegap.bitnagil.convention.extension import com.android.build.api.dsl.ApplicationExtension -import com.android.build.api.dsl.LibraryExtension import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.findByType -import org.gradle.kotlin.dsl.getByType -internal fun Project.configureAppVersion() { - val libs = extensions.getByType().named("libs") +internal fun Project.configureAppVersion(extension: ApplicationExtension) { val major = libs.findVersion("versionMajor").get().requiredVersion val minor = libs.findVersion("versionMinor").get().requiredVersion val patch = libs.findVersion("versionPatch").get().requiredVersion - extensions.findByType()?.let { appExtension -> - appExtension.defaultConfig { - versionName = "$major.$minor.$patch" - buildConfigField("int", "VERSION_MAJOR", major) - buildConfigField("int", "VERSION_MINOR", minor) - buildConfigField("int", "VERSION_PATCH", patch) - } - } - - extensions.findByType()?.let { libExtension -> - libExtension.apply { - defaultConfig { - buildConfigField("int", "VERSION_MAJOR", major) - buildConfigField("int", "VERSION_MINOR", minor) - buildConfigField("int", "VERSION_PATCH", patch) - } - buildFeatures { - buildConfig = true - } - } + extension.defaultConfig { + versionCode = libs.findVersion("versionCode").get().requiredVersion.toInt() + versionName = "$major.$minor.$patch" + buildConfigField("int", "VERSION_MAJOR", major) + buildConfigField("int", "VERSION_MINOR", minor) + buildConfigField("int", "VERSION_PATCH", patch) } } diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ApplicationId.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ApplicationId.kt deleted file mode 100644 index dd06bf50..00000000 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ApplicationId.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.threegap.bitnagil.convention.extension - -import com.android.build.api.dsl.ApplicationExtension -import com.android.build.api.dsl.LibraryExtension -import org.gradle.api.Project -import org.gradle.kotlin.dsl.findByType - -internal fun Project.configureApplicationId() { - val applicationId = "com.threegap.bitnagil" - - extensions.findByType()?.let { appExtension -> - appExtension.defaultConfig { - this.applicationId = applicationId - } - } - - extensions.findByType()?.let { libExtension -> - libExtension.apply { - defaultConfig { - buildConfigField("String", "APPLICATION_ID", "\"$applicationId\"") - } - buildFeatures { - buildConfig = true - } - } - } -} diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ComposeAndroid.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ComposeAndroid.kt index 71d62325..707bc94d 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ComposeAndroid.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ComposeAndroid.kt @@ -2,28 +2,24 @@ package com.threegap.bitnagil.convention.extension import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.getByType import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension -internal fun Project.configureComposeAndroid(commonExtension: CommonExtension<*, *, *, *, *, *>) { - val libs = extensions.getByType().named("libs") - +internal fun Project.configureComposeAndroid(commonExtension: CommonExtension) { commonExtension.apply { - buildFeatures { - compose = true - } + buildFeatures.apply { compose = true } + } - extensions.getByType().apply { - includeSourceInformation.set(true) - } + extensions.getByType().apply { + includeSourceInformation.set(true) + } - dependencies { - "implementation"(platform(libs.findLibrary("compose.bom").get())) - "implementation"(libs.findBundle("compose").get()) - "implementation"(libs.findBundle("compose.lifecycle").get()) - "debugImplementation"(libs.findBundle("compose.debug").get()) - } + dependencies { + "implementation"(platform(libs.findLibrary("compose.bom").get())) + "implementation"(libs.findBundle("compose").get()) + "implementation"(libs.findBundle("compose.lifecycle").get()) + "debugImplementation"(libs.findBundle("compose.debug").get()) } + } diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/Extensions.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/Extensions.kt new file mode 100644 index 00000000..13a5444a --- /dev/null +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/Extensions.kt @@ -0,0 +1,15 @@ +package com.threegap.bitnagil.convention.extension + +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.getByType + +internal val Project.libs: VersionCatalog + get() = extensions.getByType().named("libs") + +internal val Project.basePackage: String + get() = libs.findVersion("applicationId").get().requiredVersion + +internal val Project.namespace: String + get() = if (path == ":app") basePackage else "$basePackage.${name.replace("-", "_")}" diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/KotlinAndroid.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/KotlinAndroid.kt index b7859bd3..ee26e236 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/KotlinAndroid.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/KotlinAndroid.kt @@ -3,63 +3,43 @@ package com.threegap.bitnagil.convention.extension import com.android.build.api.dsl.CommonExtension import org.gradle.api.JavaVersion import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.getByType -import org.gradle.kotlin.dsl.withType +import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.provideDelegate +import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension import org.jetbrains.kotlin.gradle.tasks.KotlinCompile -internal fun Project.configureKotlinAndroid(commonExtension: CommonExtension<*, *, *, *, *, *>) { - val libs = extensions.getByType().named("libs") +internal fun Project.configureKotlinAndroid(commonExtension: CommonExtension) { + commonExtension.namespace = namespace commonExtension.apply { compileSdk = libs.findVersion("compileSdk").get().requiredVersion.toInt() + defaultConfig.minSdk = libs.findVersion("minSdk").get().requiredVersion.toInt() - defaultConfig { - minSdk = libs.findVersion("minSdk").get().requiredVersion.toInt() - vectorDrawables.useSupportLibrary = true - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - - buildTypes { - getByName("debug") { - isMinifyEnabled = false - } - - getByName("release") { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } + compileOptions.sourceCompatibility = JavaVersion.VERSION_17 + compileOptions.targetCompatibility = JavaVersion.VERSION_17 - packaging { - resources { - excludes.add("META-INF/AL2.0") - excludes.add("META-INF/LGPL2.1") - excludes.add("META-INF/versions/9/OSGI-INF/MANIFEST.MF") - } + packaging.resources { + excludes += setOf( + "META-INF/AL2.0", + "META-INF/LGPL2.1", + "META-INF/versions/9/OSGI-INF/MANIFEST.MF", + ) } + } - tasks.withType().configureEach { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) + extensions.configure { jvmToolchain(17) } - val warningsAsErrors: String? by project - allWarningsAsErrors.set(warningsAsErrors.toBoolean()) - freeCompilerArgs.addAll( - listOf( - "-opt-in=kotlin.RequiresOptIn", - ) - ) - } + tasks.withType().configureEach { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + val warningsAsErrors: String? by project + allWarningsAsErrors.set(warningsAsErrors?.toBoolean() ?: false) + freeCompilerArgs.addAll( + "-opt-in=kotlin.RequiresOptIn", + ) } } } + diff --git a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/KotlinCoroutine.kt b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/KotlinCoroutine.kt index cc1140d3..2c2df869 100644 --- a/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/KotlinCoroutine.kt +++ b/build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/KotlinCoroutine.kt @@ -1,17 +1,11 @@ package com.threegap.bitnagil.convention.extension -import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.dependencies -internal fun Project.configureKotlinCoroutine(commonExtension: CommonExtension<*, *, *, *, *, *>) { - val libs = extensions.getByType().named("libs") +internal fun Project.configureKotlinCoroutine() { - commonExtension.apply { - dependencies { - "implementation"(libs.findBundle("coroutine").get()) - } + dependencies { + "implementation"(libs.findBundle("coroutine").get()) } } diff --git a/build.gradle.kts b/build.gradle.kts index a27a5868..f1b950ac 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,3 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false @@ -11,9 +10,3 @@ plugins { alias(libs.plugins.hilt) apply false alias(libs.plugins.ktlint) apply false } - -allprojects { - apply { - plugin(rootProject.libs.plugins.ktlint.get().pluginId) - } -} diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts index 615ae559..bdc6ca3a 100644 --- a/core/datastore/build.gradle.kts +++ b/core/datastore/build.gradle.kts @@ -3,10 +3,6 @@ plugins { alias(libs.plugins.kotlin.serialization) } -android { - namespace = "com.threegap.bitnagil.datastore" -} - dependencies { api(libs.androidx.datastore.preferences) implementation(libs.kotlinx.serialization.json) diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index b099b8d3..b6102fe5 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -3,9 +3,4 @@ plugins { alias(libs.plugins.bitnagil.android.compose.library) } -android { - namespace = "com.threegap.bitnagil.designsystem" -} - -dependencies { -} +dependencies {} diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index f3aa8160..811ed378 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -3,10 +3,6 @@ plugins { alias(libs.plugins.kotlin.serialization) } -android { - namespace = "com.threegap.bitnagil.network" -} - dependencies { implementation(libs.kotlinx.serialization.json) implementation(platform(libs.retrofit.bom)) diff --git a/core/security/build.gradle.kts b/core/security/build.gradle.kts index 03b1b8bf..65eb0815 100644 --- a/core/security/build.gradle.kts +++ b/core/security/build.gradle.kts @@ -2,10 +2,6 @@ plugins { alias(libs.plugins.bitnagil.android.library) } -android { - namespace = "com.threegap.bitnagil.security" -} - dependencies { testImplementation(libs.androidx.junit) } diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index a6a6313b..20c23995 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -1,10 +1,9 @@ plugins { alias(libs.plugins.bitnagil.kotlin) - alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.bitnagil.kotlin.serialization) } dependencies { - implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.coroutines.core) implementation(libs.javax.inject) testImplementation(libs.junit) From c35fa570190ddb30ca6e16f538047f9e45f8a594 Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Tue, 24 Mar 2026 19:46:01 +0900 Subject: [PATCH 3/7] =?UTF-8?q?Refactor:=20=EC=95=B1=20=EB=B2=84=EC=A0=84?= =?UTF-8?q?=20=EA=B4=80=EB=A6=AC=EB=A5=BC=20app=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EC=A0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AndroidApplicationVersionNameProvider 삭제 (BuildConfig 직접 참조 제거) - PackageManagerVersionNameProvider 추가: PackageManager로 런타임에 버전명 조회 - AppVersionModule 추가: app BuildConfig의 버전 정수를 @Named로 제공 - VersionDataSourceImpl: BuildConfig 직접 참조 → @Named 주입 방식으로 변경 - PlayStoreUtils: BuildConfig.APPLICATION_ID → activity.packageName으로 변경 - data, presentation 모듈의 불필요한 buildConfig 블록 제거 --- .../bitnagil/di/data/AppVersionModule.kt | 25 +++++++++++++++++++ .../presentation/VersionNameProviderModule.kt | 4 +-- .../PackageManagerVersionNameProvider.kt | 13 ++++++++++ data/build.gradle.kts | 4 +-- .../datasourceImpl/VersionDataSourceImpl.kt | 11 +++++--- presentation/build.gradle.kts | 9 ++----- .../util/playstore/PlayStoreUtils.kt | 21 ++++++++-------- .../AndroidApplicationVersionNameProvider.kt | 14 ----------- 8 files changed, 60 insertions(+), 41 deletions(-) create mode 100644 app/src/main/java/com/threegap/bitnagil/di/data/AppVersionModule.kt create mode 100644 app/src/main/java/com/threegap/bitnagil/util/version/PackageManagerVersionNameProvider.kt delete mode 100644 presentation/src/main/java/com/threegap/bitnagil/presentation/util/version/AndroidApplicationVersionNameProvider.kt diff --git a/app/src/main/java/com/threegap/bitnagil/di/data/AppVersionModule.kt b/app/src/main/java/com/threegap/bitnagil/di/data/AppVersionModule.kt new file mode 100644 index 00000000..b8979fcd --- /dev/null +++ b/app/src/main/java/com/threegap/bitnagil/di/data/AppVersionModule.kt @@ -0,0 +1,25 @@ +package com.threegap.bitnagil.di.data + +import com.threegap.bitnagil.BuildConfig +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Named + +@Module +@InstallIn(SingletonComponent::class) +object AppVersionModule { + + @Provides + @Named("versionMajor") + fun provideVersionMajor(): Int = BuildConfig.VERSION_MAJOR + + @Provides + @Named("versionMinor") + fun provideVersionMinor(): Int = BuildConfig.VERSION_MINOR + + @Provides + @Named("versionPatch") + fun provideVersionPatch(): Int = BuildConfig.VERSION_PATCH +} diff --git a/app/src/main/java/com/threegap/bitnagil/di/presentation/VersionNameProviderModule.kt b/app/src/main/java/com/threegap/bitnagil/di/presentation/VersionNameProviderModule.kt index 9896e4bb..51ff47a2 100644 --- a/app/src/main/java/com/threegap/bitnagil/di/presentation/VersionNameProviderModule.kt +++ b/app/src/main/java/com/threegap/bitnagil/di/presentation/VersionNameProviderModule.kt @@ -1,7 +1,7 @@ package com.threegap.bitnagil.di.presentation -import com.threegap.bitnagil.presentation.util.version.AndroidApplicationVersionNameProvider import com.threegap.bitnagil.presentation.util.version.VersionNameProvider +import com.threegap.bitnagil.util.version.PackageManagerVersionNameProvider import dagger.Binds import dagger.Module import dagger.hilt.InstallIn @@ -13,5 +13,5 @@ import javax.inject.Singleton abstract class VersionNameProviderModule { @Binds @Singleton - abstract fun bindVersionNameProvider(androidApplicationVersionNameProvider: AndroidApplicationVersionNameProvider): VersionNameProvider + abstract fun bindVersionNameProvider(impl: PackageManagerVersionNameProvider): VersionNameProvider } diff --git a/app/src/main/java/com/threegap/bitnagil/util/version/PackageManagerVersionNameProvider.kt b/app/src/main/java/com/threegap/bitnagil/util/version/PackageManagerVersionNameProvider.kt new file mode 100644 index 00000000..9989faf3 --- /dev/null +++ b/app/src/main/java/com/threegap/bitnagil/util/version/PackageManagerVersionNameProvider.kt @@ -0,0 +1,13 @@ +package com.threegap.bitnagil.util.version + +import android.content.Context +import com.threegap.bitnagil.presentation.util.version.VersionNameProvider +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +class PackageManagerVersionNameProvider @Inject constructor( + @param:ApplicationContext private val context: Context, +) : VersionNameProvider { + override fun getVersionName(): String = + context.packageManager.getPackageInfo(context.packageName, 0).versionName.orEmpty() +} \ No newline at end of file diff --git a/data/build.gradle.kts b/data/build.gradle.kts index d167730e..4cbd1917 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -1,11 +1,10 @@ plugins { alias(libs.plugins.bitnagil.android.library) alias(libs.plugins.bitnagil.android.hilt) - alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.bitnagil.kotlin.serialization) } android { - namespace = "com.threegap.bitnagil.data" } dependencies { @@ -13,7 +12,6 @@ dependencies { implementation(projects.core.datastore) implementation(projects.domain) - implementation(libs.kotlinx.serialization.json) implementation(platform(libs.okhttp.bom)) implementation(libs.bundles.okhttp) implementation(platform(libs.retrofit.bom)) diff --git a/data/src/main/java/com/threegap/bitnagil/data/version/datasourceImpl/VersionDataSourceImpl.kt b/data/src/main/java/com/threegap/bitnagil/data/version/datasourceImpl/VersionDataSourceImpl.kt index 8b40f52c..1942621b 100644 --- a/data/src/main/java/com/threegap/bitnagil/data/version/datasourceImpl/VersionDataSourceImpl.kt +++ b/data/src/main/java/com/threegap/bitnagil/data/version/datasourceImpl/VersionDataSourceImpl.kt @@ -1,19 +1,22 @@ package com.threegap.bitnagil.data.version.datasourceImpl -import com.threegap.bitnagil.data.BuildConfig import com.threegap.bitnagil.data.version.datasource.VersionDataSource import com.threegap.bitnagil.data.version.model.response.VersionCheckResponse import com.threegap.bitnagil.data.version.service.VersionService import javax.inject.Inject +import javax.inject.Named class VersionDataSourceImpl @Inject constructor( private val versionService: VersionService, + @param:Named("versionMajor") private val majorVersion: Int, + @param:Named("versionMinor") private val minorVersion: Int, + @param:Named("versionPatch") private val patchVersion: Int, ) : VersionDataSource { override suspend fun checkVersion(): Result = versionService.checkVersion( - majorVersion = BuildConfig.VERSION_MAJOR, - minorVersion = BuildConfig.VERSION_MINOR, - patchVersion = BuildConfig.VERSION_PATCH, + majorVersion = majorVersion, + minorVersion = minorVersion, + patchVersion = patchVersion, ) } diff --git a/presentation/build.gradle.kts b/presentation/build.gradle.kts index 0c51effa..d7332e25 100644 --- a/presentation/build.gradle.kts +++ b/presentation/build.gradle.kts @@ -2,12 +2,8 @@ plugins { alias(libs.plugins.bitnagil.android.library) alias(libs.plugins.bitnagil.android.compose.library) alias(libs.plugins.bitnagil.android.hilt) - alias(libs.plugins.kotlin.parcelize) - alias(libs.plugins.kotlin.serialization) -} - -android { - namespace = "com.threegap.bitnagil.presentation" + alias(libs.plugins.bitnagil.kotlin.parcelize) + alias(libs.plugins.bitnagil.kotlin.serialization) } dependencies { @@ -17,7 +13,6 @@ dependencies { implementation(libs.bundles.androidx.core) implementation(libs.bundles.orbit) implementation(libs.kakao.v2.user) - implementation(libs.kotlinx.serialization.json) implementation(libs.lottie.compose) implementation(libs.bundles.coil) implementation(libs.accompanist.permissions) diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/util/playstore/PlayStoreUtils.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/util/playstore/PlayStoreUtils.kt index f9c75f0f..75044842 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/util/playstore/PlayStoreUtils.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/util/playstore/PlayStoreUtils.kt @@ -16,14 +16,12 @@ import androidx.lifecycle.lifecycleScope import com.google.android.play.core.appupdate.AppUpdateManagerFactory import com.google.android.play.core.install.model.AppUpdateType import com.google.android.play.core.install.model.UpdateAvailability -import com.threegap.bitnagil.presentation.BuildConfig import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine import kotlin.coroutines.resume import kotlin.system.exitProcess -private const val PACKAGE_NAME = BuildConfig.APPLICATION_ID private const val GOOGLE_PLAY_PACKAGE = "com.android.vending" private const val APP_EXIT_DELAY = 500L @@ -32,7 +30,8 @@ fun openAppInPlayStore( shouldFinishApp: Boolean = true, ) { activity?.let { - val isSuccess = tryOpenPlayStore(it) || tryOpenWebBrowser(it) + val packageName = it.packageName + val isSuccess = tryOpenPlayStore(it, packageName) || tryOpenWebBrowser(it, packageName) if (isSuccess && shouldFinishApp) { finishAppWithDelay(it) @@ -40,37 +39,37 @@ fun openAppInPlayStore( } } -private fun tryOpenPlayStore(activity: ComponentActivity): Boolean = +private fun tryOpenPlayStore(activity: ComponentActivity, packageName: String): Boolean = try { - val intent = createPlayStoreIntent() + val intent = createPlayStoreIntent(packageName) activity.startActivity(intent) true } catch (e: ActivityNotFoundException) { false } -private fun tryOpenWebBrowser(activity: ComponentActivity): Boolean = +private fun tryOpenWebBrowser(activity: ComponentActivity, packageName: String): Boolean = try { - val intent = createWebIntent() + val intent = createWebIntent(packageName) activity.startActivity(intent) true } catch (e: Exception) { false } -private fun createPlayStoreIntent(): Intent = +private fun createPlayStoreIntent(packageName: String): Intent = Intent( Intent.ACTION_VIEW, - "market://details?id=$PACKAGE_NAME".toUri(), + "market://details?id=$packageName".toUri(), ).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) setPackage(GOOGLE_PLAY_PACKAGE) } -private fun createWebIntent(): Intent = +private fun createWebIntent(packageName: String): Intent = Intent( Intent.ACTION_VIEW, - "https://play.google.com/store/apps/details?id=$PACKAGE_NAME".toUri(), + "https://play.google.com/store/apps/details?id=$packageName".toUri(), ).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/util/version/AndroidApplicationVersionNameProvider.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/util/version/AndroidApplicationVersionNameProvider.kt deleted file mode 100644 index 2853da44..00000000 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/util/version/AndroidApplicationVersionNameProvider.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.threegap.bitnagil.presentation.util.version - -import com.threegap.bitnagil.presentation.BuildConfig -import javax.inject.Inject - -class AndroidApplicationVersionNameProvider @Inject constructor() : VersionNameProvider { - override fun getVersionName(): String { - val majorVersion = BuildConfig.VERSION_MAJOR - val minorVersion = BuildConfig.VERSION_MINOR - val patchVersion = BuildConfig.VERSION_PATCH - - return "$majorVersion.$minorVersion.$patchVersion" - } -} From 26e1f3ea521fffe051a7b29967bd57c91a489f09 Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Tue, 24 Mar 2026 19:46:26 +0900 Subject: [PATCH 4/7] =?UTF-8?q?Fix:=20hiltViewModel=20import=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit androidx.hilt.navigation.compose.hiltViewModel → androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel --- app/src/main/java/com/threegap/bitnagil/MainNavHost.kt | 2 +- .../bitnagil/presentation/screen/emotion/EmotionScreen.kt | 2 +- .../threegap/bitnagil/presentation/screen/guide/GuideScreen.kt | 2 +- .../threegap/bitnagil/presentation/screen/home/HomeScreen.kt | 2 +- .../threegap/bitnagil/presentation/screen/login/LoginScreen.kt | 2 +- .../bitnagil/presentation/screen/mypage/MyPageScreen.kt | 2 +- .../bitnagil/presentation/screen/onboarding/OnBoardingScreen.kt | 2 +- .../screen/recommendroutine/RecommendRoutineScreen.kt | 2 +- .../presentation/screen/reporthistory/ReportHistoryScreen.kt | 2 +- .../presentation/screen/reportwrite/ReportWriteScreen.kt | 2 +- .../presentation/screen/routinelist/RoutineListScreen.kt | 2 +- .../presentation/screen/routinewrite/RoutineWriteScreen.kt | 2 +- .../bitnagil/presentation/screen/setting/SettingScreen.kt | 2 +- .../bitnagil/presentation/screen/splash/SplashScreen.kt | 2 +- .../bitnagil/presentation/screen/terms/TermsAgreementScreen.kt | 2 +- .../bitnagil/presentation/screen/withdrawal/WithdrawalScreen.kt | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/threegap/bitnagil/MainNavHost.kt b/app/src/main/java/com/threegap/bitnagil/MainNavHost.kt index 8621fe2a..98911568 100644 --- a/app/src/main/java/com/threegap/bitnagil/MainNavHost.kt +++ b/app/src/main/java/com/threegap/bitnagil/MainNavHost.kt @@ -2,7 +2,7 @@ package com.threegap.bitnagil import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.toRoute diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/emotion/EmotionScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/emotion/EmotionScreen.kt index ca757537..f8e85bd3 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/emotion/EmotionScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/emotion/EmotionScreen.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.presentation.screen.emotion.component.template.EmotionRecommendRoutineScreen import com.threegap.bitnagil.presentation.screen.emotion.component.template.SimpleEmotionSelectionScreen import com.threegap.bitnagil.presentation.screen.emotion.component.template.SwipeEmotionSelectionScreen diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/guide/GuideScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/guide/GuideScreen.kt index ae2f555e..914c7875 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/guide/GuideScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/guide/GuideScreen.kt @@ -12,7 +12,7 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.component.block.BitnagilTopBar import com.threegap.bitnagil.presentation.screen.guide.component.atom.GuideButton import com.threegap.bitnagil.presentation.screen.guide.component.template.GuideBottomSheet diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/home/HomeScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/home/HomeScreen.kt index f3cfcdb7..2a7108e5 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/home/HomeScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/home/HomeScreen.kt @@ -26,7 +26,7 @@ import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.modifier.clickableWithoutRipple import com.threegap.bitnagil.presentation.screen.home.component.template.CollapsibleHeader diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/login/LoginScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/login/LoginScreen.kt index 21c1eccc..f5329e2f 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/login/LoginScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/login/LoginScreen.kt @@ -26,7 +26,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.R import com.threegap.bitnagil.designsystem.component.atom.BitnagilIcon diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/mypage/MyPageScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/mypage/MyPageScreen.kt index 260a7b8b..92b6fa19 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/mypage/MyPageScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/mypage/MyPageScreen.kt @@ -22,7 +22,7 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.R import com.threegap.bitnagil.designsystem.component.atom.BitnagilIconButton diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/onboarding/OnBoardingScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/onboarding/OnBoardingScreen.kt index a65245d0..60f6488b 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/onboarding/OnBoardingScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/onboarding/OnBoardingScreen.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.component.block.BitnagilProgressTopBar import com.threegap.bitnagil.presentation.screen.onboarding.component.template.OnBoardingAbstractTemplate diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/recommendroutine/RecommendRoutineScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/recommendroutine/RecommendRoutineScreen.kt index 2f3969d8..10dd5ce9 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/recommendroutine/RecommendRoutineScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/recommendroutine/RecommendRoutineScreen.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.R import com.threegap.bitnagil.designsystem.component.atom.BitnagilIcon diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/reporthistory/ReportHistoryScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/reporthistory/ReportHistoryScreen.kt index 3cddc851..abcb368e 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/reporthistory/ReportHistoryScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/reporthistory/ReportHistoryScreen.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.R import com.threegap.bitnagil.designsystem.component.atom.BitnagilChip diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/reportwrite/ReportWriteScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/reportwrite/ReportWriteScreen.kt index dcb1afdf..1312b42d 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/reportwrite/ReportWriteScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/reportwrite/ReportWriteScreen.kt @@ -45,7 +45,7 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.component.atom.BitnagilTextButton diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/routinelist/RoutineListScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/routinelist/RoutineListScreen.kt index 0496bf22..ed919723 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/routinelist/RoutineListScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/routinelist/RoutineListScreen.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.component.block.BitnagilTopBar import com.threegap.bitnagil.presentation.screen.routinelist.component.template.DeleteConfirmBottomSheet diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/routinewrite/RoutineWriteScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/routinewrite/RoutineWriteScreen.kt index c75a1bba..dfdb7fd8 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/routinewrite/RoutineWriteScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/routinewrite/RoutineWriteScreen.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.R import com.threegap.bitnagil.designsystem.component.atom.BitnagilTextButton diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/setting/SettingScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/setting/SettingScreen.kt index f87153f9..52321302 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/setting/SettingScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/setting/SettingScreen.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.component.block.BitnagilAlertDialog import com.threegap.bitnagil.designsystem.component.block.BitnagilOptionButton diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/splash/SplashScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/splash/SplashScreen.kt index 5b1495e5..4e0e95ec 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/splash/SplashScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/splash/SplashScreen.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.R import com.threegap.bitnagil.designsystem.component.atom.BitnagilIcon import com.threegap.bitnagil.presentation.screen.splash.component.template.BitnagilLottieAnimation diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/terms/TermsAgreementScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/terms/TermsAgreementScreen.kt index 19c51a3b..90b8e8ed 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/terms/TermsAgreementScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/terms/TermsAgreementScreen.kt @@ -13,7 +13,7 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.component.atom.BitnagilTextButton import com.threegap.bitnagil.designsystem.component.block.BitnagilTopBar diff --git a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/withdrawal/WithdrawalScreen.kt b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/withdrawal/WithdrawalScreen.kt index 37e76778..aaf08071 100644 --- a/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/withdrawal/WithdrawalScreen.kt +++ b/presentation/src/main/java/com/threegap/bitnagil/presentation/screen/withdrawal/WithdrawalScreen.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel +import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import com.threegap.bitnagil.designsystem.BitnagilTheme import com.threegap.bitnagil.designsystem.R import com.threegap.bitnagil.designsystem.component.atom.BitnagilIcon From e6ac347a99964c6553bf48c7fb3fba833a0eabc0 Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Tue, 24 Mar 2026 19:46:40 +0900 Subject: [PATCH 5/7] =?UTF-8?q?Fix:=20AndroidManifest=EC=97=90=20installLo?= =?UTF-8?q?cation=3D"auto"=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 28c5ae01..80597191 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + xmlns:tools="http://schemas.android.com/tools" + android:installLocation="auto"> From 215b48e7e2577d24345afafe57a08b9ccb23c6e3 Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Wed, 25 Mar 2026 16:34:24 +0900 Subject: [PATCH 6/7] =?UTF-8?q?Chore:=20Kotlin=20Serialization=20=ED=94=8C?= =?UTF-8?q?=EB=9F=AC=EA=B7=B8=EC=9D=B8=20=EA=B5=90=EC=B2=B4=20=EB=B0=8F=20?= =?UTF-8?q?namespace=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 85b716ab..7417a8f0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,12 +3,10 @@ import java.util.Properties plugins { alias(libs.plugins.bitnagil.android.application) alias(libs.plugins.bitnagil.android.hilt) - alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.bitnagil.kotlin.serialization) } android { - namespace = "com.threegap.bitnagil" - val properties = Properties().apply { val propFile = rootProject.file("local.properties") From 1f12e43ff74d087c195370eeec61c8c9bdb5e64f Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Wed, 25 Mar 2026 21:53:40 +0900 Subject: [PATCH 7/7] =?UTF-8?q?Chore:=20installLocation=EC=9D=84=20interna?= =?UTF-8?q?lOnly=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 80597191..9c0e6200 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:installLocation="internalOnly">