From 61d9a8f4f0dd9ede04961fb2cc3e601155d4141e Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 04:25:11 +0900 Subject: [PATCH 01/24] =?UTF-8?q?[ADD/#171]=20libs.versions.toml=20?= =?UTF-8?q?=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 219 +++++++++++++++++++++++++++++++++++--- 1 file changed, 202 insertions(+), 17 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 54596282..a044adf0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,24 +1,209 @@ [versions] -agp = "8.3.0" -kotlin = "1.9.0" -coreKtx = "1.13.0" +# Build Tools +agp = "8.0.2" + +# Kotlin +kotlin = "1.8.20" + +# AndroidX +androidx-core-ktx = "1.13.1" +androidx-core-splashscreen = "1.0.1" +androidx-appcompat = "1.7.0" +androidx-activity-ktx = "1.9.0" +androidx-lifecycle = "2.8.3" +androidx-lifecycle-runtime-ktx = "2.8.7" +androidx-datastore = "1.1.1" +androidx-navigation = "2.7.7" +androidx-fragment-ktx = "1.5.7" +androidx-startup = "1.1.1" +androidx-legacy-support = "1.0.0" +androidx-security-crypto = "1.1.0-alpha06" +androidx-constraint-layout = "2.1.4" + +# Google +material-design = "1.9.0" +app-update = "2.1.0" +google-services = "4.4.2" + +# Hilt +hilt = "2.46.1" + +# Networking +retrofit = "2.9.0" +okhttp = "4.11.0" +json-converter = "1.0.0" + +# Kotlin Extensions +kotlin-coroutines = "1.7.1" +kotlin-serialization = "1.5.1" +kotlin-datetime = "0.4.0" + +# UI Libraries +coil = "2.4.0" +glide = "4.12.0" +glide-transformations = "4.3.0" +lottie = "6.0.0" +shimmer = "0.5.0" +circular-progress-bar = "3.1.0" +progress-view = "1.1.3" +balloon = "1.4.5" +circle-indicator = "2.1.6" + +# Amplitude +amplitude = "1.17.3" + +# Firebase +firebase-bom = "33.1.2" +crashlytics = "2.9.9" + +# Kakao SDK +kakao = "2.20.3" + +# Testing junit = "4.13.2" -junitVersion = "1.1.5" -espressoCore = "3.5.1" -appcompat = "1.6.1" -material = "1.11.0" -navigationFragmentKtx = "2.7.7" -navigationUiKtx = "2.7.7" +espresso = "3.3.0" +androidx-test = "1.1.2" + +# Timber +timber = "5.0.1" [libraries] -androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +# Kotlin +kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } +kotlin-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlin-coroutines" } +kotlin-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlin-serialization" } +kotlin-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlin-datetime" } + +# AndroidX +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidx-core-ktx" } +androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "androidx-core-splashscreen" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" } +androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidx-activity-ktx" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-runtime-ktx" } +androidx-lifecycle = { group = "androidx.lifecycle", name = "lifecycle-common-java8", version.ref = "androidx-lifecycle" } +androidx-datastore = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "androidx-datastore" } +androidx-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "androidx-navigation" } +androidx-navigation-ui = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "androidx-navigation" } +androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "androidx-fragment-ktx" } +androidx-startup = { group = "androidx.startup", name = "startup-runtime", version.ref = "androidx-startup" } +androidx-legacy-support = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "androidx-legacy-support" } +androidx-security-crypto = { group = "androidx.security", name = "security-crypto", version.ref = "androidx-security-crypto" } +androidx-constraint-layout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraint-layout" } + +# MaterialDesign +material-design = { group = "com.google.android.material", name = "material", version.ref = "material-design" } + +# Hilt +hilt = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } +hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" } + +# Networking +retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } +retrofit-json-converter = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "json-converter" } +okhttp-bom = { group = "com.squareup.okhttp3", name = "okhttp-bom", version.ref = "okhttp" } +okhttp = { group = "com.squareup.okhttp3", name = "okhttp" } +okhttp-logging-interceptor = { group = "com.squareup.okhttp3", name = "logging-interceptor" } + +# UI Libraries +coil = { group = "io.coil-kt", name = "coil", version.ref = "coil" } +glide = { group = "com.github.bumptech.glide", name = "glide", version.ref = "glide" } +glide-transformations = { group = "jp.wasabeef", name = "glide-transformations", version.ref = "glide-transformations" } +lottie = { group = "com.airbnb.android", name = "lottie", version.ref = "lottie" } +shimmer = { group = "com.facebook.shimmer", name = "shimmer", version.ref = "shimmer" } +circular-progress-bar = { group = "com.mikhaellopez", name = "circularprogressbar", version.ref = "circular-progress-bar" } +progress-view = { group = "com.github.skydoves", name = "progressview", version.ref = "progress-view" } +balloon = { group = "com.github.skydoves", name = "balloon", version.ref = "balloon" } +circle-indicator = { group = "me.relex", name = "circleindicator", version.ref = "circle-indicator" } + +# Analytics +amplitude = { group = "com.amplitude", name = "analytics-android", version.ref = "amplitude" } + +# Firebase +firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebase-bom" } +firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics-ktx" } +firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics-ktx" } +firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging-ktx" } + +# Kakao +kakao = { group = "com.kakao.sdk", name = "v2-user", version.ref = "kakao" } + +# Testing junit = { group = "junit", name = "junit", version.ref = "junit" } -androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } -androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } -androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } -material = { group = "com.google.android.material", name = "material", version.ref = "material" } +androidx-test = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test" } +espresso = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso" } -[plugins] -androidApplication = { id = "com.android.application", version.ref = "agp" } -jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +# App Update +app-update = { group = "com.google.android.play", name = "app-update-ktx", version.ref = "app-update" } + +# Timber +timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "timber" } + +[bundles] +kotlin = [ + "kotlin", + "kotlin-coroutines", + "kotlin-serialization", + "kotlin-datetime" +] +androidx = [ + "androidx-core-ktx", + "androidx-core-splashscreen", + "androidx-appcompat", + "androidx-activity-ktx", + "androidx-lifecycle-runtime-ktx", + "androidx-lifecycle", + "androidx-datastore", + "androidx-navigation-fragment", + "androidx-navigation-ui", + "androidx-fragment-ktx", + "androidx-startup", + "androidx-legacy-support", + "androidx-security-crypto", + "androidx-constraint-layout" +] + +hilt = [ + "hilt", + "hilt-compiler" +] + +networking = [ + "retrofit", + "retrofit-json-converter", + "okhttp-bom", + "okhttp", + "okhttp-logging-interceptor" +] + +ui = [ + "coil", + "glide", + "glide-transformations", + "lottie", + "shimmer", + "circular-progress-bar", + "progress-view", + "balloon", + "circle-indicator" +] + +firebase = [ + "firebase-bom", + "firebase-crashlytics", + "firebase-analytics", + "firebase-messaging" +] + +testing = [ + "junit", + "androidx-test", + "espresso" +] + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } +google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } +google-crashlytics = { id = "com.google.firebase:firebase-crashlytics-gradle", version.ref = "crashlytics" } From 4621224a2e3fb9f3f4bc7a1294cc1f40011b49ed Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 04:34:23 +0900 Subject: [PATCH 02/24] =?UTF-8?q?[ADD/#171]=20build-logic=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-logic/build.gradle.kts | 46 ++++++++++++++++++++++++++++++++++ build-logic/setting.gradle.kts | 0 2 files changed, 46 insertions(+) create mode 100644 build-logic/build.gradle.kts create mode 100644 build-logic/setting.gradle.kts diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts new file mode 100644 index 00000000..8d6c5e40 --- /dev/null +++ b/build-logic/build.gradle.kts @@ -0,0 +1,46 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") +} + +android { + namespace = "kr.genti.convention" + compileSdk = 34 + + defaultConfig { + applicationId = "kr.genti.convention" + minSdk = 28 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } +} + +dependencies { + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.material.design) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.test) + androidTestImplementation(libs.espresso) +} \ No newline at end of file diff --git a/build-logic/setting.gradle.kts b/build-logic/setting.gradle.kts new file mode 100644 index 00000000..e69de29b From 6f46ed6b2af44d3c086d962224ea1c1fd8694259 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 04:45:19 +0900 Subject: [PATCH 03/24] =?UTF-8?q?[ADD/#171]=20Convention=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-logic/{ => convention}/build.gradle.kts | 0 build-logic/gradle.properties | 3 +++ build-logic/setting.gradle.kts | 16 ++++++++++++++++ 3 files changed, 19 insertions(+) rename build-logic/{ => convention}/build.gradle.kts (100%) create mode 100644 build-logic/gradle.properties diff --git a/build-logic/build.gradle.kts b/build-logic/convention/build.gradle.kts similarity index 100% rename from build-logic/build.gradle.kts rename to build-logic/convention/build.gradle.kts diff --git a/build-logic/gradle.properties b/build-logic/gradle.properties new file mode 100644 index 00000000..6977b719 --- /dev/null +++ b/build-logic/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.parallel=true +org.gradle.caching=true +org.gradle.configureondemand=true \ No newline at end of file diff --git a/build-logic/setting.gradle.kts b/build-logic/setting.gradle.kts index e69de29b..fd968aff 100644 --- a/build-logic/setting.gradle.kts +++ b/build-logic/setting.gradle.kts @@ -0,0 +1,16 @@ +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + +dependencyResolutionManagement { + repositories { + google() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "build-logic" +include(":convention") \ No newline at end of file From d3ad63302eb917abd349f665f5b5a527a28bd8fd Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 04:48:11 +0900 Subject: [PATCH 04/24] =?UTF-8?q?[ADD/#171]=20setting=EC=97=90=20build-log?= =?UTF-8?q?ic=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- settings.gradle.kts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/settings.gradle.kts b/settings.gradle.kts index 4f982844..9af2d230 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,9 @@ +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + pluginManagement { + + includeBuild("build-logic") + repositories { google() mavenCentral() From f89f045da7f4816eb6100c7263b920321bb76be5 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 04:55:02 +0900 Subject: [PATCH 05/24] =?UTF-8?q?[ADD/#171]=20convention=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20build=20gradle=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-logic/convention/build.gradle.kts | 45 ++++--------------------- 1 file changed, 6 insertions(+), 39 deletions(-) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 8d6c5e40..cd095e6f 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -1,46 +1,13 @@ plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") + `kotlin-dsl` } -android { - namespace = "kr.genti.convention" - compileSdk = 34 - - defaultConfig { - applicationId = "kr.genti.convention" - minSdk = 28 - targetSdk = 34 - versionCode = 1 - versionName = "1.0" - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = "1.8" - } +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } dependencies { - - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - implementation(libs.material.design) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.test) - androidTestImplementation(libs.espresso) + compileOnly(libs.android.application) + compileOnly(libs.kotlin.android) } \ No newline at end of file From fa958a2eff7c66ddebaa2e5aa4ba0f40378e1a2c Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 05:01:39 +0900 Subject: [PATCH 06/24] =?UTF-8?q?[ADD/#171]=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=20build=20Gradle=20=ED=94=8C=EB=9F=AC=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 20 +++++++------------- gradle/libs.versions.toml | 2 +- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index ed5abd78..35d22b95 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,18 +3,12 @@ buildscript { google() mavenCentral() } - - dependencies { - ClassPathPlugins.run { - classpath(gradle) - classpath(kotlinGradlePlugin) - classpath(hiltGradlePlugin) - classpath(googleServices) - classpath(crashlyticsGradle) - } - } } -tasks.register("clean", Delete::class) { - delete(rootProject.buildDir) -} +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.hilt) + alias(libs.plugins.google.services) + alias(libs.plugins.google.crashlytics) +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a044adf0..694804b9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -206,4 +206,4 @@ android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } -google-crashlytics = { id = "com.google.firebase:firebase-crashlytics-gradle", version.ref = "crashlytics" } +google-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "crashlytics" } From 205d6708cb7873d75a57ba73d48311209621a804 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 06:12:53 +0900 Subject: [PATCH 07/24] =?UTF-8?q?[FIX/#171]=20=EC=95=88=EB=93=9C=EB=A1=9C?= =?UTF-8?q?=EC=9D=B4=EB=93=9C=20=EC=BD=94=EB=A3=A8=ED=8B=B4=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-logic/convention/build.gradle.kts | 8 ++++---- build.gradle.kts | 10 +++++----- gradle/libs.versions.toml | 17 ++++++++++++++--- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index cd095e6f..e849f070 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -7,7 +7,7 @@ java { targetCompatibility = JavaVersion.VERSION_17 } -dependencies { - compileOnly(libs.android.application) - compileOnly(libs.kotlin.android) -} \ No newline at end of file +//dependencies { +// compileOnly(libs.android.application) +// compileOnly(libs.kotlin.android) +//} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 35d22b95..5e50908e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,9 +6,9 @@ buildscript { } plugins { - alias(libs.plugins.android.application) - alias(libs.plugins.kotlin.android) - alias(libs.plugins.hilt) - alias(libs.plugins.google.services) - alias(libs.plugins.google.crashlytics) + alias(libs.plugins.android.application) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.hilt) apply false + alias(libs.plugins.google.services) apply false + alias(libs.plugins.google.crashlytics) apply false } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 694804b9..2980d625 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -34,10 +34,12 @@ okhttp = "4.11.0" json-converter = "1.0.0" # Kotlin Extensions -kotlin-coroutines = "1.7.1" kotlin-serialization = "1.5.1" kotlin-datetime = "0.4.0" +# Coroutine +coroutine = "1.7.1" + # UI Libraries coil = "2.4.0" glide = "4.12.0" @@ -70,10 +72,14 @@ timber = "5.0.1" [libraries] # Kotlin kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } -kotlin-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlin-coroutines" } kotlin-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlin-serialization" } kotlin-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlin-datetime" } +# Coroutine +coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutine" } +coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutine" } +coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutine" } + # AndroidX androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidx-core-ktx" } androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "androidx-core-splashscreen" } @@ -141,7 +147,6 @@ timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "tim [bundles] kotlin = [ "kotlin", - "kotlin-coroutines", "kotlin-serialization", "kotlin-datetime" ] @@ -163,6 +168,12 @@ androidx = [ "androidx-constraint-layout" ] +coroutine = [ + "coroutines-android", + "coroutines-core", + "coroutines-test" +] + hilt = [ "hilt", "hilt-compiler" From 36f3d809cd1c6f5dc506d2d357444ce6a95d2984 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 06:13:06 +0900 Subject: [PATCH 08/24] =?UTF-8?q?[ADD/#171]=20Convention=20Ext=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/kr/genti/convention/Constants.kt | 17 +++++++++++++++++ .../kr/genti/convention/extension/ProjectExt.kt | 9 +++++++++ .../convention/extension/VersionCatalogExt.kt | 17 +++++++++++++++++ .../{setting.gradle.kts => settings.gradle.kts} | 0 4 files changed, 43 insertions(+) create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/Constants.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/extension/ProjectExt.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/extension/VersionCatalogExt.kt rename build-logic/{setting.gradle.kts => settings.gradle.kts} (100%) diff --git a/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt b/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt new file mode 100644 index 00000000..6eb8b93f --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt @@ -0,0 +1,17 @@ +package kr.genti.convention.extension + +import org.gradle.api.JavaVersion + +object Constants { + const val packageName = "kr.genti.android" + + const val compileSdk = 34 + const val minSdk = 28 + const val targetSdk = 34 + + const val versionCode = 18 + const val versionName = "2.0.2" + + const val JDK_VERSION = 17 + val JAVA_VERSION = JavaVersion.VERSION_17 +} diff --git a/build-logic/convention/src/main/java/kr/genti/convention/extension/ProjectExt.kt b/build-logic/convention/src/main/java/kr/genti/convention/extension/ProjectExt.kt new file mode 100644 index 00000000..47746cd5 --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/extension/ProjectExt.kt @@ -0,0 +1,9 @@ +package kr.genti.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 + +val Project.libs: VersionCatalog + get() = extensions.getByType().named("libs") \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/extension/VersionCatalogExt.kt b/build-logic/convention/src/main/java/kr/genti/convention/extension/VersionCatalogExt.kt new file mode 100644 index 00000000..faf80f4a --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/extension/VersionCatalogExt.kt @@ -0,0 +1,17 @@ +package kr.genti.convention.extension + +import org.gradle.api.artifacts.ExternalModuleDependencyBundle +import org.gradle.api.artifacts.MinimalExternalModuleDependency +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionConstraint +import org.gradle.api.provider.Provider + +fun VersionCatalog.getBundle(bundleName: String): Provider = + findBundle(bundleName).orElseThrow { + NoSuchElementException("Bundle with name $bundleName not found in the catalog") + } + +fun VersionCatalog.getLibrary(libraryName: String): Provider = + findLibrary(libraryName).orElseThrow { + NoSuchElementException("Library with name $libraryName not found in the catalog") + } \ No newline at end of file diff --git a/build-logic/setting.gradle.kts b/build-logic/settings.gradle.kts similarity index 100% rename from build-logic/setting.gradle.kts rename to build-logic/settings.gradle.kts From da6f9f85307b3f962bcb80bbfa63383c24656a7b Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 06:42:15 +0900 Subject: [PATCH 09/24] =?UTF-8?q?[ADD/#171]=20Gradle=20Plugin=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-logic/convention/build.gradle.kts | 8 ++++---- .../src/main/java/kr/genti/convention/Constants.kt | 10 ++-------- gradle/libs.versions.toml | 6 +++++- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index e849f070..af7ebbc6 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -7,7 +7,7 @@ java { targetCompatibility = JavaVersion.VERSION_17 } -//dependencies { -// compileOnly(libs.android.application) -// compileOnly(libs.kotlin.android) -//} \ No newline at end of file +dependencies { + compileOnly(libs.android.gradlePlugin) + compileOnly(libs.kotlin.gradlePlugin) +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt b/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt index 6eb8b93f..c6286810 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt @@ -1,17 +1,11 @@ -package kr.genti.convention.extension - -import org.gradle.api.JavaVersion +package kr.genti.convention object Constants { const val packageName = "kr.genti.android" - const val compileSdk = 34 const val minSdk = 28 const val targetSdk = 34 - const val versionCode = 18 const val versionName = "2.0.2" - - const val JDK_VERSION = 17 - val JAVA_VERSION = JavaVersion.VERSION_17 + const val jvmVersion = "17" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2980d625..128228f5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] # Build Tools -agp = "8.0.2" +agp = "8.1.4" # Kotlin kotlin = "1.8.20" @@ -70,6 +70,10 @@ androidx-test = "1.1.2" timber = "5.0.1" [libraries] +# Gradle Plugin +android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "agp" } +kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } + # Kotlin kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } kotlin-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlin-serialization" } From 468161a02fdb32c35064c397af9e7f1f35f8db65 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 21:59:02 +0900 Subject: [PATCH 10/24] =?UTF-8?q?[ADD/#171]=20project=20configuration=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/kr/genti/convention/Constants.kt | 3 ++ .../convention/config/CommonPluginConfig.kt | 22 +++++++++ .../genti/convention/config/DefaultConfig.kt | 27 +++++++++++ .../extension/DependencyHandlerScopeExt.kt | 47 +++++++++++++++++++ .../extension/ExtensionContainerExt.kt | 10 ++++ 5 files changed, 109 insertions(+) create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/extension/DependencyHandlerScopeExt.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/extension/ExtensionContainerExt.kt diff --git a/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt b/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt index c6286810..c1383c6f 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt @@ -2,10 +2,13 @@ package kr.genti.convention object Constants { const val packageName = "kr.genti.android" + const val compileSdk = 34 const val minSdk = 28 const val targetSdk = 34 + const val versionCode = 18 const val versionName = "2.0.2" + const val jvmVersion = "17" } diff --git a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt new file mode 100644 index 00000000..db9cf690 --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt @@ -0,0 +1,22 @@ +package kr.genti.convention.config + +import kr.genti.convention.extension.getLibrary +import kr.genti.convention.extension.implementation +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.getByType + +fun Project.configureAndroidCommonPlugin() { + apply() + apply() + with(plugins) { + apply("kotlin-kapt") + apply("kotlin-parcelize") + } + + val libs = extensions.getByType().named("libs") + dependencies { + implementation(libs.getLibrary("materialDesign")) + } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt b/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt new file mode 100644 index 00000000..4552127e --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt @@ -0,0 +1,27 @@ +package kr.genti.convention.config + +import com.android.build.api.dsl.ApplicationExtension +import com.android.build.api.dsl.CommonExtension +import kr.genti.convention.Constants +import org.gradle.api.plugins.ExtensionAware +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions + +internal fun ApplicationExtension.configureDefault() { + defaultConfig { + applicationId = Constants.packageName + targetSdk = Constants.targetSdk + minSdk = Constants.minSdk + versionCode = Constants.versionCode + versionName = Constants.versionName + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + kotlinOptions { + jvmTarget = Constants.jvmVersion + } +} + +fun CommonExtension<*, *, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { + (this as ExtensionAware).extensions.configure("kotlinOptions", block) +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/extension/DependencyHandlerScopeExt.kt b/build-logic/convention/src/main/java/kr/genti/convention/extension/DependencyHandlerScopeExt.kt new file mode 100644 index 00000000..ec5fb735 --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/extension/DependencyHandlerScopeExt.kt @@ -0,0 +1,47 @@ +package kr.genti.convention.extension + +import org.gradle.api.Project +import org.gradle.api.file.ConfigurableFileCollection +import org.gradle.api.file.ConfigurableFileTree +import org.gradle.api.provider.Provider +import org.gradle.kotlin.dsl.DependencyHandlerScope + +fun DependencyHandlerScope.implementation(project: Project) { + "implementation"(project) +} + +fun DependencyHandlerScope.implementation(provider: Provider<*>) { + "implementation"(provider) +} + +fun DependencyHandlerScope.implementation(fileTree: ConfigurableFileTree) { + "implementation"(fileTree) +} + +fun DependencyHandlerScope.implementation(fileCollection: ConfigurableFileCollection) { + "implementation"(fileCollection) +} + +fun DependencyHandlerScope.debugImplementation(provider: Provider<*>) { + "debugImplementation"(provider) +} + +fun DependencyHandlerScope.releaseImplementation(provider: Provider<*>) { + "releaseImplementation"(provider) +} + +fun DependencyHandlerScope.kapt(provider: Provider<*>) { + "kapt"(provider) +} + +fun DependencyHandlerScope.coreLibraryDesugaring(provider: Provider<*>) { + "coreLibraryDesugaring"(provider) +} + +fun DependencyHandlerScope.androidTestImplementation(provider: Provider<*>) { + "androidTestImplementation"(provider) +} + +fun DependencyHandlerScope.testImplementation(provider: Provider<*>) { + "testImplementation"(provider) +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/extension/ExtensionContainerExt.kt b/build-logic/convention/src/main/java/kr/genti/convention/extension/ExtensionContainerExt.kt new file mode 100644 index 00000000..310bfc5e --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/extension/ExtensionContainerExt.kt @@ -0,0 +1,10 @@ +package kr.genti.convention.extension + +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.api.plugins.ExtensionContainer +import org.gradle.kotlin.dsl.getByType + +fun ExtensionContainer.getVersionCatalog(): VersionCatalog { + return getByType().named("libs") +} \ No newline at end of file From c5332e35251a29d0f0ed5b0e175d8c71e9c1c72f Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 22:21:13 +0900 Subject: [PATCH 11/24] =?UTF-8?q?[FEAT/#171]=20=ED=94=8C=EB=9F=AC=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=B4=88=EA=B8=B0=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/kr/genti/convention/Constants.kt | 3 ++ .../convention/config/CommonPluginConfig.kt | 6 ++- .../genti/convention/config/DefaultConfig.kt | 8 +-- .../genti/convention/extension/CommonExt.kt | 9 ++++ .../plugin/AndroidApplicationPlugin.kt | 49 +++++++++++++++++ .../convention/plugin/AndroidHiltPlugin.kt | 23 ++++++++ .../convention/plugin/AndroidKotlinPlugin.kt | 21 ++++++++ .../convention/plugin/AndroidLibraryPlugin.kt | 52 +++++++++++++++++++ 8 files changed, 163 insertions(+), 8 deletions(-) create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/extension/CommonExt.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidHiltPlugin.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidKotlinPlugin.kt create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt diff --git a/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt b/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt index c1383c6f..33766c2e 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/Constants.kt @@ -1,5 +1,7 @@ package kr.genti.convention +import org.gradle.api.JavaVersion + object Constants { const val packageName = "kr.genti.android" @@ -11,4 +13,5 @@ object Constants { const val versionName = "2.0.2" const val jvmVersion = "17" + val JAVA_VERSION = JavaVersion.VERSION_17 } diff --git a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt index db9cf690..cdadd037 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt @@ -2,6 +2,8 @@ package kr.genti.convention.config import kr.genti.convention.extension.getLibrary import kr.genti.convention.extension.implementation +import kr.genti.convention.plugin.AndroidHiltPlugin +import kr.genti.convention.plugin.AndroidKotlinPlugin import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.kotlin.dsl.apply @@ -19,4 +21,6 @@ fun Project.configureAndroidCommonPlugin() { val libs = extensions.getByType().named("libs") dependencies { implementation(libs.getLibrary("materialDesign")) - } \ No newline at end of file + implementation(libs.getLibrary("timber")) + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt b/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt index 4552127e..abfe1c5a 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt @@ -1,10 +1,8 @@ package kr.genti.convention.config import com.android.build.api.dsl.ApplicationExtension -import com.android.build.api.dsl.CommonExtension import kr.genti.convention.Constants -import org.gradle.api.plugins.ExtensionAware -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions +import kr.genti.convention.extension.kotlinOptions internal fun ApplicationExtension.configureDefault() { defaultConfig { @@ -20,8 +18,4 @@ internal fun ApplicationExtension.configureDefault() { kotlinOptions { jvmTarget = Constants.jvmVersion } -} - -fun CommonExtension<*, *, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { - (this as ExtensionAware).extensions.configure("kotlinOptions", block) } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/extension/CommonExt.kt b/build-logic/convention/src/main/java/kr/genti/convention/extension/CommonExt.kt new file mode 100644 index 00000000..89880084 --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/extension/CommonExt.kt @@ -0,0 +1,9 @@ +package kr.genti.convention.extension + +import com.android.build.api.dsl.CommonExtension +import org.gradle.api.plugins.ExtensionAware +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions + +fun CommonExtension<*, *, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { + (this as ExtensionAware).extensions.configure("kotlinOptions", block) +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt new file mode 100644 index 00000000..e962eddb --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt @@ -0,0 +1,49 @@ +package kr.genti.convention.plugin + +import com.android.build.api.dsl.ApplicationExtension +import kr.genti.convention.Constants +import kr.genti.convention.config.configureAndroidCommonPlugin +import kr.genti.convention.config.configureDefault +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure + +class AndroidApplicationPlugin : Plugin { + override fun apply(target: Project) = + with(target) { + with(pluginManager) { + apply("com.android.application") + apply("com.google.firebase.crashlytics") + } + + extensions.configure { + namespace = Constants.packageName + compileSdk = Constants.compileSdk + + configureAndroidCommonPlugin() + configureDefault() + + buildFeatures { + buildConfig = true + viewBinding = true + dataBinding = true + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + ) + } + } + + compileOptions { + sourceCompatibility = Constants.JAVA_VERSION + targetCompatibility = Constants.JAVA_VERSION + } + + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidHiltPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidHiltPlugin.kt new file mode 100644 index 00000000..79f6bc5a --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidHiltPlugin.kt @@ -0,0 +1,23 @@ +package kr.genti.convention.plugin + +import kr.genti.convention.extension.getLibrary +import kr.genti.convention.extension.getVersionCatalog +import kr.genti.convention.extension.implementation +import kr.genti.convention.extension.kapt +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class AndroidHiltPlugin : Plugin { + override fun apply(target: Project) = with(target) { + with(pluginManager) { + apply("dagger.hilt.android.plugin") + } + + val libs = extensions.getVersionCatalog() + dependencies { + implementation(libs.getLibrary("hilt")) + kapt(libs.getLibrary("hiltAndroidCompiler")) + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidKotlinPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidKotlinPlugin.kt new file mode 100644 index 00000000..a2d3c849 --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidKotlinPlugin.kt @@ -0,0 +1,21 @@ +package kr.genti.convention.plugin + +import kr.genti.convention.extension.getBundle +import kr.genti.convention.extension.getVersionCatalog +import kr.genti.convention.extension.implementation +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class AndroidKotlinPlugin : Plugin { + override fun apply(target: Project) = with(target) { + with(pluginManager) { + apply("kotlin-android") + } + + val libs = extensions.getVersionCatalog() + dependencies { + implementation(libs.getBundle("kotlin")) + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt new file mode 100644 index 00000000..5c95e5fb --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt @@ -0,0 +1,52 @@ +package kr.genti.convention.plugin + +import com.android.build.gradle.LibraryExtension +import kr.genti.convention.Constants +import kr.genti.convention.config.configureAndroidCommonPlugin +import kr.genti.convention.extension.androidTestImplementation +import kr.genti.convention.extension.getLibrary +import kr.genti.convention.extension.getVersionCatalog +import kr.genti.convention.extension.kotlinOptions +import kr.genti.convention.extension.testImplementation +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies + +class AndroidLibraryPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.library") + } + + extensions.configure { + configureAndroidCommonPlugin() + + compileSdk = Constants.compileSdk + defaultConfig { + minSdk = Constants.minSdk + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + compileOptions { + sourceCompatibility = Constants.JAVA_VERSION + targetCompatibility = Constants.JAVA_VERSION + } + + kotlinOptions { + jvmTarget = Constants.jvmVersion + } + } + + val libs = extensions.getVersionCatalog() + dependencies { + // test + testImplementation(libs.getLibrary("jUnit")) + androidTestImplementation(libs.getLibrary("androidTest")) + androidTestImplementation(libs.getLibrary("espresso")) + } + } + } +} \ No newline at end of file From 528ee50e62f0a60273db343bd60977f40c99daf8 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 22:53:28 +0900 Subject: [PATCH 12/24] =?UTF-8?q?[FEAT/#171]=20=ED=94=8C=EB=9F=AC=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B3=A0=EB=8F=84=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../convention/config/CommonPluginConfig.kt | 10 +++--- .../genti/convention/config/DefaultConfig.kt | 21 ------------ .../plugin/AndroidApplicationPlugin.kt | 31 ++++++++++++----- .../convention/plugin/AndroidLibraryPlugin.kt | 15 ++------ .../{AndroidHiltPlugin.kt => HiltPlugin.kt} | 2 +- .../convention/plugin/JavaLibraryPlugin.kt | 34 +++++++++++++++++++ ...AndroidKotlinPlugin.kt => KotlinPlugin.kt} | 2 +- .../kr/genti/convention/plugin/TestPlugin.kt | 21 ++++++++++++ 8 files changed, 87 insertions(+), 49 deletions(-) delete mode 100644 build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt rename build-logic/convention/src/main/java/kr/genti/convention/plugin/{AndroidHiltPlugin.kt => HiltPlugin.kt} (93%) create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt rename build-logic/convention/src/main/java/kr/genti/convention/plugin/{AndroidKotlinPlugin.kt => KotlinPlugin.kt} (92%) create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt diff --git a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt index cdadd037..c6a53858 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt @@ -2,8 +2,9 @@ package kr.genti.convention.config import kr.genti.convention.extension.getLibrary import kr.genti.convention.extension.implementation -import kr.genti.convention.plugin.AndroidHiltPlugin -import kr.genti.convention.plugin.AndroidKotlinPlugin +import kr.genti.convention.plugin.HiltPlugin +import kr.genti.convention.plugin.KotlinPlugin +import kr.genti.convention.plugin.TestPlugin import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.kotlin.dsl.apply @@ -11,8 +12,9 @@ import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.getByType fun Project.configureAndroidCommonPlugin() { - apply() - apply() + apply() + apply() + apply() with(plugins) { apply("kotlin-kapt") apply("kotlin-parcelize") diff --git a/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt b/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt deleted file mode 100644 index abfe1c5a..00000000 --- a/build-logic/convention/src/main/java/kr/genti/convention/config/DefaultConfig.kt +++ /dev/null @@ -1,21 +0,0 @@ -package kr.genti.convention.config - -import com.android.build.api.dsl.ApplicationExtension -import kr.genti.convention.Constants -import kr.genti.convention.extension.kotlinOptions - -internal fun ApplicationExtension.configureDefault() { - defaultConfig { - applicationId = Constants.packageName - targetSdk = Constants.targetSdk - minSdk = Constants.minSdk - versionCode = Constants.versionCode - versionName = Constants.versionName - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - kotlinOptions { - jvmTarget = Constants.jvmVersion - } -} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt index e962eddb..efe65e9f 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt @@ -3,7 +3,7 @@ package kr.genti.convention.plugin import com.android.build.api.dsl.ApplicationExtension import kr.genti.convention.Constants import kr.genti.convention.config.configureAndroidCommonPlugin -import kr.genti.convention.config.configureDefault +import kr.genti.convention.extension.kotlinOptions import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure @@ -13,15 +13,34 @@ class AndroidApplicationPlugin : Plugin { with(target) { with(pluginManager) { apply("com.android.application") + apply ("com.google.gms.google-services") apply("com.google.firebase.crashlytics") } extensions.configure { + configureAndroidCommonPlugin() + namespace = Constants.packageName compileSdk = Constants.compileSdk - configureAndroidCommonPlugin() - configureDefault() + defaultConfig { + applicationId = Constants.packageName + targetSdk = Constants.targetSdk + minSdk = Constants.minSdk + versionCode = Constants.versionCode + versionName = Constants.versionName + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + compileOptions { + sourceCompatibility = Constants.JAVA_VERSION + targetCompatibility = Constants.JAVA_VERSION + } + + kotlinOptions { + jvmTarget = Constants.jvmVersion + } buildFeatures { buildConfig = true @@ -38,12 +57,6 @@ class AndroidApplicationPlugin : Plugin { ) } } - - compileOptions { - sourceCompatibility = Constants.JAVA_VERSION - targetCompatibility = Constants.JAVA_VERSION - } - } } } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt index 5c95e5fb..2ed680c0 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt @@ -3,15 +3,10 @@ package kr.genti.convention.plugin import com.android.build.gradle.LibraryExtension import kr.genti.convention.Constants import kr.genti.convention.config.configureAndroidCommonPlugin -import kr.genti.convention.extension.androidTestImplementation -import kr.genti.convention.extension.getLibrary -import kr.genti.convention.extension.getVersionCatalog import kr.genti.convention.extension.kotlinOptions -import kr.genti.convention.extension.testImplementation import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.dependencies class AndroidLibraryPlugin : Plugin { override fun apply(target: Project) { @@ -24,12 +19,14 @@ class AndroidLibraryPlugin : Plugin { configureAndroidCommonPlugin() compileSdk = Constants.compileSdk + defaultConfig { minSdk = Constants.minSdk testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") } + compileOptions { sourceCompatibility = Constants.JAVA_VERSION targetCompatibility = Constants.JAVA_VERSION @@ -39,14 +36,6 @@ class AndroidLibraryPlugin : Plugin { jvmTarget = Constants.jvmVersion } } - - val libs = extensions.getVersionCatalog() - dependencies { - // test - testImplementation(libs.getLibrary("jUnit")) - androidTestImplementation(libs.getLibrary("androidTest")) - androidTestImplementation(libs.getLibrary("espresso")) - } } } } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidHiltPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt similarity index 93% rename from build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidHiltPlugin.kt rename to build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt index 79f6bc5a..8bd95393 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidHiltPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt @@ -8,7 +8,7 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies -class AndroidHiltPlugin : Plugin { +class HiltPlugin : Plugin { override fun apply(target: Project) = with(target) { with(pluginManager) { apply("dagger.hilt.android.plugin") diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt new file mode 100644 index 00000000..186f69f8 --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt @@ -0,0 +1,34 @@ +package kr.genti.convention.plugin + +import com.android.build.gradle.LibraryExtension +import kr.genti.convention.Constants +import kr.genti.convention.extension.getBundle +import kr.genti.convention.extension.getVersionCatalog +import kr.genti.convention.extension.implementation +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies + +class JavaLibraryPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("org.jetbrains.kotlin.jvm") + apply("java-library") + } + + extensions.configure { + compileOptions { + sourceCompatibility = Constants.JAVA_VERSION + targetCompatibility = Constants.JAVA_VERSION + } + } + + val libs = extensions.getVersionCatalog() + dependencies { + implementation(libs.getBundle("kotlin")) + } + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidKotlinPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/KotlinPlugin.kt similarity index 92% rename from build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidKotlinPlugin.kt rename to build-logic/convention/src/main/java/kr/genti/convention/plugin/KotlinPlugin.kt index a2d3c849..388572a5 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidKotlinPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/KotlinPlugin.kt @@ -7,7 +7,7 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies -class AndroidKotlinPlugin : Plugin { +class KotlinPlugin : Plugin { override fun apply(target: Project) = with(target) { with(pluginManager) { apply("kotlin-android") diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt new file mode 100644 index 00000000..5f86ec57 --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt @@ -0,0 +1,21 @@ +package kr.genti.convention.plugin + +import kr.genti.convention.extension.androidTestImplementation +import kr.genti.convention.extension.getLibrary +import kr.genti.convention.extension.getVersionCatalog +import kr.genti.convention.extension.testImplementation +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class TestPlugin : Plugin { + override fun apply(target: Project) = with(target) { + + val libs = extensions.getVersionCatalog() + dependencies { + testImplementation(libs.getLibrary("jUnit")) + androidTestImplementation(libs.getLibrary("androidTest")) + androidTestImplementation(libs.getLibrary("espresso")) + } + } +} \ No newline at end of file From 44b55b6d3b0efa4ff4fbac945c38af2a0005dd2b Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Wed, 20 Nov 2024 23:00:26 +0900 Subject: [PATCH 13/24] =?UTF-8?q?[ADD/#171]=20build=20Gradle=EC=97=90=20?= =?UTF-8?q?=ED=94=8C=EB=9F=AC=EA=B7=B8=EC=9D=B8=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-logic/convention/build.gradle.kts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index af7ebbc6..ab980c93 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -10,4 +10,21 @@ java { dependencies { compileOnly(libs.android.gradlePlugin) compileOnly(libs.kotlin.gradlePlugin) +} + +gradlePlugin { + plugins { + register("androidApplication") { + id = "kr.genti.androidApplication" + implementationClass = "kr.genti.buildlogic.AndroidApplicationPlugin" + } + register("androidLibrary") { + id = "kr.genti.androidLibrary" + implementationClass = "kr.genti.buildlogic.AndroidLibraryPlugin" + } + register("javaLibrary") { + id = "kr.genti.javaLibrary" + implementationClass = "kr.genti.buildlogic.JavaLibraryPlugin" + } + } } \ No newline at end of file From 111a42a07ace88c11ecc9e08569a71950edaa920 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Thu, 21 Nov 2024 00:02:31 +0900 Subject: [PATCH 14/24] =?UTF-8?q?[FEAT/#171]=20=EA=B0=81=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20build=20gradle=20=ED=94=8C=EB=9F=AC=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 101 ++---------------- .../convention/plugin/AndroidLibraryPlugin.kt | 4 + core/build.gradle.kts | 45 +------- data/build.gradle.kts | 60 +---------- domain/build.gradle.kts | 17 +-- gradle/libs.versions.toml | 32 +----- presentation/build.gradle.kts | 96 ++--------------- 7 files changed, 34 insertions(+), 321 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7bfec101..f3196c98 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,38 +1,10 @@ import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties plugins { - id("com.android.application") - kotlin("android") - kotlin("kapt") - id("kotlin-parcelize") - id("dagger.hilt.android.plugin") - id("com.google.gms.google-services") - id("com.google.firebase.crashlytics") + id("kr.genti.androidApplication") } android { - namespace = Constants.packageName - compileSdk = Constants.compileSdk - - defaultConfig { - applicationId = Constants.packageName - minSdk = Constants.minSdk - targetSdk = Constants.targetSdk - versionCode = Constants.versionCode - versionName = Constants.versionName - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - - buildConfigField( - "String", - "NATIVE_APP_KEY", - gradleLocalProperties(rootDir).getProperty("native.app.key"), - ) - - manifestPlaceholders["NATIVE_APP_KEY"] = - gradleLocalProperties(rootDir).getProperty("nativeAppKey") - } - buildTypes { debug { buildConfigField( @@ -57,72 +29,17 @@ android { "AMPLITUDE_KEY", gradleLocalProperties(rootDir).getProperty("amplitude.api.key"), ) - - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro", - ) } } - - compileOptions { - sourceCompatibility = Versions.javaVersion - targetCompatibility = Versions.javaVersion - } - - kotlinOptions { - jvmTarget = Versions.jvmVersion - } - - buildFeatures { - buildConfig = true - dataBinding = true - viewBinding = true - } } dependencies { - implementation(project(":core")) - implementation(project(":data")) - implementation(project(":domain")) - implementation(project(":presentation")) - - KotlinDependencies.run { - implementation(kotlin) - implementation(coroutines) - implementation(jsonSerialization) - } - - AndroidXDependencies.run { - implementation(coreKtx) - implementation(appCompat) - implementation(hilt) - } - - KaptDependencies.run { - kapt(hiltCompiler) - } - - TestDependencies.run { - testImplementation(jUnit) - androidTestImplementation(androidTest) - androidTestImplementation(espresso) - } - - RetrofitDependencies.run { - implementation(platform(okHttpBom)) - implementation(okHttp) - implementation(okHttpLoggingInterceptor) - implementation(retrofit) - implementation(retrofitJsonConverter) - } - - ThirdPartyDependencies.run { - implementation(timber) - } - - KakaoDependencies.run { - implementation(user) - } + implementation(projects.core) + implementation(projects.data) + implementation(projects.domain) + implementation(projects.presentation) + + implementation(platform(libs.okhttp.bom)) + implementation(libs.bundles.networking) + implementation(libs.kakao) } diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt index 2ed680c0..bddd32bb 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt @@ -35,6 +35,10 @@ class AndroidLibraryPlugin : Plugin { kotlinOptions { jvmTarget = Constants.jvmVersion } + + buildFeatures { + buildConfig = true + } } } } diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 15e47907..343dc31f 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,50 +1,7 @@ plugins { - id("com.android.library") - kotlin("android") - kotlin("kapt") - id("dagger.hilt.android.plugin") + id("kr.genti.androidApplication") } android { namespace = "kr.genti.core" - compileSdk = Constants.compileSdk - - defaultConfig { - minSdk = Constants.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - compileOptions { - sourceCompatibility = Versions.javaVersion - targetCompatibility = Versions.javaVersion - } - kotlinOptions { - jvmTarget = Versions.jvmVersion - } - - buildFeatures { - dataBinding = true - viewBinding = true - } -} - -dependencies { - // Kotlin - implementation(KotlinDependencies.kotlin) - - // Lifecycle Ktx - implementation(AndroidXDependencies.lifeCycleKtx) - - // Material Design - implementation(MaterialDesignDependencies.materialDesign) - - // Hilt - implementation(AndroidXDependencies.hilt) - kapt(KaptDependencies.hiltCompiler) - - // Test Dependency - testImplementation(TestDependencies.jUnit) - androidTestImplementation(TestDependencies.androidTest) - androidTestImplementation(TestDependencies.espresso) } diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 56c5dcb2..145a3d60 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -1,66 +1,14 @@ plugins { - id("com.android.library") - kotlin("android") - kotlin("kapt") - kotlin("plugin.serialization") version Versions.kotlinVersion + id("kr.genti.androidApplication") } android { namespace = "kr.genti.data" - compileSdk = Constants.compileSdk - - defaultConfig { - minSdk = Constants.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - compileOptions { - sourceCompatibility = Versions.javaVersion - targetCompatibility = Versions.javaVersion - } - - kotlinOptions { - jvmTarget = Versions.jvmVersion - } - - buildFeatures { - buildConfig = true - } } dependencies { - implementation(project(":domain")) - - AndroidXDependencies.run { - implementation(hilt) - implementation(security) - implementation(coreKtx) - } - - KotlinDependencies.run { - implementation(kotlin) - implementation(jsonSerialization) - implementation(coroutines) - implementation(dateTime) - } - - RetrofitDependencies.run { - implementation(platform(okHttpBom)) - implementation(okHttp) - implementation(okHttpLoggingInterceptor) - implementation(retrofit) - implementation(retrofitJsonConverter) - } - - ThirdPartyDependencies.run { - implementation(timber) - } + implementation(projects.domain) - TestDependencies.run { - testImplementation(jUnit) - androidTestImplementation(androidTest) - androidTestImplementation(espresso) - } + implementation(platform(libs.okhttp.bom)) + implementation(libs.bundles.networking) } diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index 649449cf..5b9bf4c5 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -1,18 +1,3 @@ plugins { - id("java-library") - kotlin("jvm") - kotlin("kapt") -} - -java { - sourceCompatibility = Versions.javaVersion - targetCompatibility = Versions.javaVersion -} - -dependencies { - KotlinDependencies.run { - implementation(kotlin) - implementation(coroutines) - implementation(dateTime) - } + id("kr.genti.javaLibrary") } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 128228f5..750c4e2a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -36,9 +36,7 @@ json-converter = "1.0.0" # Kotlin Extensions kotlin-serialization = "1.5.1" kotlin-datetime = "0.4.0" - -# Coroutine -coroutine = "1.7.1" +kotlin-coroutines = "1.7.1" # UI Libraries coil = "2.4.0" @@ -78,11 +76,7 @@ kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", ve kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } kotlin-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlin-serialization" } kotlin-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlin-datetime" } - -# Coroutine -coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutine" } -coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutine" } -coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutine" } +kotlin-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlin-coroutines" } # AndroidX androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidx-core-ktx" } @@ -152,7 +146,8 @@ timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "tim kotlin = [ "kotlin", "kotlin-serialization", - "kotlin-datetime" + "kotlin-datetime", + "kotlin-coroutines", ] androidx = [ @@ -172,21 +167,9 @@ androidx = [ "androidx-constraint-layout" ] -coroutine = [ - "coroutines-android", - "coroutines-core", - "coroutines-test" -] - -hilt = [ - "hilt", - "hilt-compiler" -] - networking = [ "retrofit", "retrofit-json-converter", - "okhttp-bom", "okhttp", "okhttp-logging-interceptor" ] @@ -204,18 +187,11 @@ ui = [ ] firebase = [ - "firebase-bom", "firebase-crashlytics", "firebase-analytics", "firebase-messaging" ] -testing = [ - "junit", - "androidx-test", - "espresso" -] - [plugins] android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } diff --git a/presentation/build.gradle.kts b/presentation/build.gradle.kts index 4dc4cd5e..fc020ebb 100644 --- a/presentation/build.gradle.kts +++ b/presentation/build.gradle.kts @@ -1,104 +1,30 @@ plugins { - id("com.android.library") - kotlin("android") - kotlin("kapt") - id("kotlin-parcelize") - id("dagger.hilt.android.plugin") + id("kr.genti.androidApplication") } android { namespace = "kr.genti.presentation" - compileSdk = Constants.compileSdk defaultConfig { - minSdk = Constants.minSdk - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - buildConfigField("String", "VERSION_NAME", "\"${Constants.versionName}\"") buildConfigField("String", "VERSION_CODE", "\"${Constants.versionCode}\"") } - compileOptions { - sourceCompatibility = Versions.javaVersion - targetCompatibility = Versions.javaVersion - } - - kotlinOptions { - jvmTarget = Versions.jvmVersion - } - buildFeatures { - buildConfig = true dataBinding = true viewBinding = true } } dependencies { - implementation(project(":core")) - implementation(project(":domain")) - - KotlinDependencies.run { - implementation(kotlin) - implementation(coroutines) - implementation(jsonSerialization) - implementation(dateTime) - } - - AndroidXDependencies.run { - implementation(coreKtx) - implementation(appCompat) - implementation(constraintLayout) - implementation(fragment) - implementation(navigationFragment) - implementation(navigationUi) - implementation(startup) - implementation(legacy) - implementation(security) - implementation(lifeCycleKtx) - implementation(lifecycleJava8) - implementation(splashScreen) - implementation(hilt) - implementation(appUpdate) - } - - KaptDependencies.run { - kapt(hiltCompiler) - } - - MaterialDesignDependencies.run { - implementation(materialDesign) - } - - TestDependencies.run { - testImplementation(jUnit) - androidTestImplementation(androidTest) - androidTestImplementation(espresso) - } - - ThirdPartyDependencies.run { - implementation(coil) - implementation(glide) - implementation(glideTransformations) - implementation(timber) - implementation(amplitude) - implementation(progressView) - implementation(balloon) - implementation(lottie) - implementation(circularProgressBar) - implementation(circleIndicator) - } - - FirebaseDependencies.run { - implementation(platform(firebaseBom)) - implementation(messaging) - implementation(crashlytics) - implementation(analytics) - } - - KakaoDependencies.run { - implementation(user) - } + implementation(projects.core) + implementation(projects.domain) + + implementation(platform(libs.okhttp.bom)) + implementation(libs.bundles.networking) + implementation(libs.bundles.androidx) + implementation(libs.bundles.ui) + implementation(platform(libs.firebase.bom)) + implementation(libs.bundles.firebase) + implementation(libs.kakao) } From 51111ae3b316c04d68045d84ad90a599c5f26052 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Thu, 21 Nov 2024 01:22:03 +0900 Subject: [PATCH 15/24] =?UTF-8?q?[REFACTOR/#171]=20buildSrc=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EB=B0=8F=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-logic/convention/build.gradle.kts | 29 ++++-- .../convention/config/CommonPluginConfig.kt | 3 +- .../convention/plugin/AndroidLibraryPlugin.kt | 3 + .../kr/genti/convention/plugin/HiltPlugin.kt | 3 +- .../convention/plugin/JavaLibraryPlugin.kt | 10 +- .../kr/genti/convention/plugin/TestPlugin.kt | 2 +- buildSrc/build.gradle.kts | 7 -- buildSrc/src/main/kotlin/Constants.kt | 8 -- buildSrc/src/main/kotlin/Dependencies.kt | 96 ------------------- buildSrc/src/main/kotlin/Versions.kt | 47 --------- gradle/libs.versions.toml | 4 +- presentation/build.gradle.kts | 5 - 12 files changed, 34 insertions(+), 183 deletions(-) delete mode 100644 buildSrc/build.gradle.kts delete mode 100644 buildSrc/src/main/kotlin/Constants.kt delete mode 100644 buildSrc/src/main/kotlin/Dependencies.kt delete mode 100644 buildSrc/src/main/kotlin/Versions.kt diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index ab980c93..9f07f52f 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -8,23 +8,36 @@ java { } dependencies { - compileOnly(libs.android.gradlePlugin) - compileOnly(libs.kotlin.gradlePlugin) + implementation(libs.android.gradlePlugin) + implementation(libs.kotlin.gradlePlugin) } gradlePlugin { plugins { - register("androidApplication") { + register("AndroidApplicationPlugin") { id = "kr.genti.androidApplication" - implementationClass = "kr.genti.buildlogic.AndroidApplicationPlugin" + implementationClass = "kr.genti.convention.plugin.AndroidApplicationPlugin" } - register("androidLibrary") { + register("AndroidLibraryPlugin") { id = "kr.genti.androidLibrary" - implementationClass = "kr.genti.buildlogic.AndroidLibraryPlugin" + implementationClass = "kr.genti.convention.plugin.AndroidLibraryPlugin" } - register("javaLibrary") { + register("JavaLibraryPlugin") { id = "kr.genti.javaLibrary" - implementationClass = "kr.genti.buildlogic.JavaLibraryPlugin" + implementationClass = "kr.genti.convention.plugin.JavaLibraryPlugin" + } + + register("KotlinPlugin") { + id = "kr.genti.kotlin" + implementationClass = "kr.genti.convention.plugin.KotlinPlugin" + } + register("HiltPlugin") { + id = "kr.genti.hilt" + implementationClass = "kr.genti.convention.plugin.HiltPlugin" + } + register("TestPlugin") { + id = "kr.genti.test" + implementationClass = "kr.genti.convention.plugin.TestPlugin" } } } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt index c6a53858..5a89b957 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt @@ -16,13 +16,12 @@ fun Project.configureAndroidCommonPlugin() { apply() apply() with(plugins) { - apply("kotlin-kapt") apply("kotlin-parcelize") } val libs = extensions.getByType().named("libs") dependencies { - implementation(libs.getLibrary("materialDesign")) + implementation(libs.getLibrary("material-design")) implementation(libs.getLibrary("timber")) } } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt index bddd32bb..e3594ed2 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt @@ -25,6 +25,9 @@ class AndroidLibraryPlugin : Plugin { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") + + buildConfigField("String", "VERSION_NAME", "\"${Constants.versionName}\"") + buildConfigField("String", "VERSION_CODE", "\"${Constants.versionCode}\"") } compileOptions { diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt index 8bd95393..6263dcfe 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt @@ -11,13 +11,14 @@ import org.gradle.kotlin.dsl.dependencies class HiltPlugin : Plugin { override fun apply(target: Project) = with(target) { with(pluginManager) { + apply("org.jetbrains.kotlin.kapt") apply("dagger.hilt.android.plugin") } val libs = extensions.getVersionCatalog() dependencies { implementation(libs.getLibrary("hilt")) - kapt(libs.getLibrary("hiltAndroidCompiler")) + kapt(libs.getLibrary("hilt-compiler")) } } } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt index 186f69f8..84d4252a 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt @@ -1,12 +1,12 @@ package kr.genti.convention.plugin -import com.android.build.gradle.LibraryExtension import kr.genti.convention.Constants import kr.genti.convention.extension.getBundle import kr.genti.convention.extension.getVersionCatalog import kr.genti.convention.extension.implementation import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.plugins.JavaPluginExtension import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies @@ -18,11 +18,9 @@ class JavaLibraryPlugin : Plugin { apply("java-library") } - extensions.configure { - compileOptions { - sourceCompatibility = Constants.JAVA_VERSION - targetCompatibility = Constants.JAVA_VERSION - } + extensions.configure { + sourceCompatibility = Constants.JAVA_VERSION + targetCompatibility = Constants.JAVA_VERSION } val libs = extensions.getVersionCatalog() diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt index 5f86ec57..2b3dfa54 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt @@ -14,7 +14,7 @@ class TestPlugin : Plugin { val libs = extensions.getVersionCatalog() dependencies { testImplementation(libs.getLibrary("jUnit")) - androidTestImplementation(libs.getLibrary("androidTest")) + androidTestImplementation(libs.getLibrary("android-test")) androidTestImplementation(libs.getLibrary("espresso")) } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index b22ed732..00000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - `kotlin-dsl` -} - -repositories { - mavenCentral() -} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/Constants.kt b/buildSrc/src/main/kotlin/Constants.kt deleted file mode 100644 index 9576f7de..00000000 --- a/buildSrc/src/main/kotlin/Constants.kt +++ /dev/null @@ -1,8 +0,0 @@ -object Constants { - const val packageName = "kr.genti.android" - const val compileSdk = 34 - const val minSdk = 28 - const val targetSdk = 34 - const val versionCode = 18 - const val versionName = "2.0.2" -} diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt deleted file mode 100644 index 966a53a4..00000000 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ /dev/null @@ -1,96 +0,0 @@ -object KotlinDependencies { - const val kotlin = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlinVersion}" - const val coroutines = - "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutinesAndroidVersion}" - const val jsonSerialization = - "org.jetbrains.kotlinx:kotlinx-serialization-json:${Versions.kotlinSerializationJsonVersion}" - const val dateTime = "org.jetbrains.kotlinx:kotlinx-datetime:${Versions.kotlinDateTimeVersion}" -} - -object AndroidXDependencies { - const val coreKtx = "androidx.core:core-ktx:${Versions.coreKtxVersion}" - const val splashScreen = "androidx.core:core-splashscreen:${Versions.splashVersion}" - - const val appCompat = "androidx.appcompat:appcompat:${Versions.appCompatVersion}" - const val constraintLayout = - "androidx.constraintlayout:constraintlayout:${Versions.constraintLayoutVersion}" - const val startup = "androidx.startup:startup-runtime:${Versions.appStartUpVersion}" - const val fragment = "androidx.fragment:fragment-ktx:${Versions.fragmentKtxVersion}" - const val legacy = "androidx.legacy:legacy-support-v4:${Versions.legacySupportVersion}" - const val security = "androidx.security:security-crypto:${Versions.securityVersion}" - - const val navigationFragment = - "androidx.navigation:navigation-fragment-ktx:${Versions.navigationVersion}" - const val navigationUi = "androidx.navigation:navigation-ui-ktx:${Versions.navigationVersion}" - - const val lifeCycleKtx = "androidx.lifecycle:lifecycle-runtime-ktx:${Versions.lifecycleVersion}" - const val lifecycleJava8 = - "androidx.lifecycle:lifecycle-common-java8:${Versions.lifecycleVersion}" - - const val hilt = "com.google.dagger:hilt-android:${Versions.hiltVersion}" - const val appUpdate = "com.google.android.play:app-update-ktx:${Versions.appUpdateVersion}" -} - -object TestDependencies { - const val jUnit = "junit:junit:${Versions.junitVersion}" - const val androidTest = "androidx.test.ext:junit:${Versions.androidTestVersion}" - const val espresso = "androidx.test.espresso:espresso-core:${Versions.espressoVersion}" -} - -object MaterialDesignDependencies { - const val materialDesign = - "com.google.android.material:material:${Versions.materialDesignVersion}" -} - -object KaptDependencies { - const val hiltCompiler = "com.google.dagger:hilt-compiler:${Versions.hiltVersion}" -} - -object RetrofitDependencies { - const val retrofit = "com.squareup.retrofit2:retrofit:${Versions.retrofitVersion}" - const val retrofitJsonConverter = - "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:${Versions.jsonConverterVersion}" - - const val okHttpBom = "com.squareup.okhttp3:okhttp-bom:${Versions.okHttpVersion}" - const val okHttp = "com.squareup.okhttp3:okhttp" - const val okHttpLoggingInterceptor = "com.squareup.okhttp3:logging-interceptor" -} - -object ThirdPartyDependencies { - const val coil = "io.coil-kt:coil:${Versions.coilVersion}" - const val glide = "com.github.bumptech.glide:glide:${Versions.glideVersion}" - const val glideTransformations = - "jp.wasabeef:glide-transformations:${Versions.glideTransformationsVersion}" - const val amplitude = "com.amplitude:analytics-android:${Versions.amplitudeVersion}" - const val timber = "com.jakewharton.timber:timber:${Versions.timberVersion}" - const val progressView = "com.github.skydoves:progressview:${Versions.progressViewVersion}" - const val balloon = "com.github.skydoves:balloon:${Versions.balloonVersion}" - const val lottie = "com.airbnb.android:lottie:${Versions.lottieVersion}" - const val circularProgressBar = - "com.mikhaellopez:circularprogressbar:${Versions.circularProgressBar}" - const val circleIndicator = "me.relex:circleindicator:${Versions.circleIndicatorVersion}" - const val shimmer = "com.facebook.shimmer:shimmer:${Versions.shimmerVersion}" -} - -object ClassPathPlugins { - const val gradle = "com.android.tools.build:gradle:${Versions.gradleVersion}" - const val kotlinGradlePlugin = - "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlinVersion}" - const val hiltGradlePlugin = - "com.google.dagger:hilt-android-gradle-plugin:${Versions.hiltVersion}" - - const val googleServices = "com.google.gms:google-services:${Versions.googleServicesVersion}" - const val crashlyticsGradle = - "com.google.firebase:firebase-crashlytics-gradle:${Versions.crashlyticsVersion}" -} - -object FirebaseDependencies { - const val firebaseBom = "com.google.firebase:firebase-bom:${Versions.firebaseBomVersion}" - const val messaging = "com.google.firebase:firebase-messaging-ktx" - const val crashlytics = "com.google.firebase:firebase-crashlytics-ktx" - const val analytics = "com.google.firebase:firebase-analytics-ktx" -} - -object KakaoDependencies { - const val user = "com.kakao.sdk:v2-user:${Versions.kakaoVersion}" -} diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt deleted file mode 100644 index 97c2f4c7..00000000 --- a/buildSrc/src/main/kotlin/Versions.kt +++ /dev/null @@ -1,47 +0,0 @@ -import org.gradle.api.JavaVersion - -object Versions { - const val gradleVersion = "8.0.2" - const val kotlinVersion = "1.8.20" - - val javaVersion = JavaVersion.VERSION_17 - const val jvmVersion = "17" - - const val coroutinesAndroidVersion = "1.7.1" - const val kotlinSerializationJsonVersion = "1.5.1" - const val kotlinDateTimeVersion = "0.4.0" - const val coreKtxVersion = "1.10.1" - const val appCompatVersion = "1.6.1" - const val materialDesignVersion = "1.9.0" - const val constraintLayoutVersion = "2.1.4" - const val appStartUpVersion = "1.1.1" - const val legacySupportVersion = "1.0.0" - const val securityVersion = "1.1.0-alpha06" - const val hiltVersion = "2.46.1" - const val fragmentKtxVersion = "1.5.7" - const val navigationVersion = "2.7.7" - const val lifecycleVersion = "2.6.1" - const val splashVersion = "1.0.1" - const val coilVersion = "2.4.0" - const val glideVersion = "4.12.0" - const val glideTransformationsVersion = "4.3.0" - const val retrofitVersion = "2.9.0" - const val jsonConverterVersion = "1.0.0" - const val okHttpVersion = "4.11.0" - const val amplitudeVersion = "1.17.3" - const val timberVersion = "5.0.1" - const val progressViewVersion = "1.1.3" - const val balloonVersion = "1.4.5" - const val lottieVersion = "6.0.0" - const val circularProgressBar = "3.1.0" - const val kakaoVersion = "2.20.3" - const val circleIndicatorVersion = "2.1.6" - const val shimmerVersion = "0.5.0" - const val junitVersion = "4.13.2" - const val espressoVersion = "3.3.0" - const val androidTestVersion = "1.1.2" - const val firebaseBomVersion = "33.1.2" - const val googleServicesVersion = "4.4.2" - const val crashlyticsVersion = "2.9.9" - const val appUpdateVersion = "2.1.0" -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 750c4e2a..85ce3f90 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -132,8 +132,8 @@ firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging kakao = { group = "com.kakao.sdk", name = "v2-user", version.ref = "kakao" } # Testing -junit = { group = "junit", name = "junit", version.ref = "junit" } -androidx-test = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test" } +jUnit = { group = "junit", name = "junit", version.ref = "junit" } +android-test = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test" } espresso = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso" } # App Update diff --git a/presentation/build.gradle.kts b/presentation/build.gradle.kts index fc020ebb..0f83221e 100644 --- a/presentation/build.gradle.kts +++ b/presentation/build.gradle.kts @@ -5,11 +5,6 @@ plugins { android { namespace = "kr.genti.presentation" - defaultConfig { - buildConfigField("String", "VERSION_NAME", "\"${Constants.versionName}\"") - buildConfigField("String", "VERSION_CODE", "\"${Constants.versionCode}\"") - } - buildFeatures { dataBinding = true viewBinding = true From c09253223c2b9463905148b24046a064e7908b7b Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Thu, 21 Nov 2024 15:12:31 +0900 Subject: [PATCH 16/24] =?UTF-8?q?[ADD/#171]=20Version=20=ED=94=8C=EB=9F=AC?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 14 ++++++++++++++ build-logic/convention/build.gradle.kts | 4 ++++ .../convention/plugin/AndroidApplicationPlugin.kt | 2 -- .../kr/genti/convention/plugin/VersionPlugin.kt | 14 ++++++++++++++ presentation/build.gradle.kts | 6 ++++++ 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 build-logic/convention/src/main/java/kr/genti/convention/plugin/VersionPlugin.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f3196c98..5bcd6db0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,9 +2,22 @@ import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties plugins { id("kr.genti.androidApplication") + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") } android { + defaultConfig { + buildConfigField( + "String", + "NATIVE_APP_KEY", + gradleLocalProperties(rootDir).getProperty("native.app.key"), + ) + + manifestPlaceholders["NATIVE_APP_KEY"] = + gradleLocalProperties(rootDir).getProperty("nativeAppKey") + } + buildTypes { debug { buildConfigField( @@ -42,4 +55,5 @@ dependencies { implementation(platform(libs.okhttp.bom)) implementation(libs.bundles.networking) implementation(libs.kakao) + implementation("com.android.tools.build:aapt2:8.1.4-10154469") } diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 9f07f52f..f38db1c9 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -39,5 +39,9 @@ gradlePlugin { id = "kr.genti.test" implementationClass = "kr.genti.convention.plugin.TestPlugin" } + register("versionPlugin") { + id = "kr.genti.version" + implementationClass = "kr.genti.convention.plugin.VersionPlugin" + } } } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt index efe65e9f..b70907ce 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidApplicationPlugin.kt @@ -13,8 +13,6 @@ class AndroidApplicationPlugin : Plugin { with(target) { with(pluginManager) { apply("com.android.application") - apply ("com.google.gms.google-services") - apply("com.google.firebase.crashlytics") } extensions.configure { diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/VersionPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/VersionPlugin.kt new file mode 100644 index 00000000..eea141d9 --- /dev/null +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/VersionPlugin.kt @@ -0,0 +1,14 @@ +package kr.genti.convention.plugin + +import kr.genti.convention.Constants +import org.gradle.api.Plugin +import org.gradle.api.Project + +class VersionPlugin : Plugin { + override fun apply(target: Project) = with(target) { + with(extensions) { + extraProperties["versionName"] = Constants.versionName + extraProperties["versionCode"] = Constants.versionCode + } + } +} \ No newline at end of file diff --git a/presentation/build.gradle.kts b/presentation/build.gradle.kts index 0f83221e..ba36b5e4 100644 --- a/presentation/build.gradle.kts +++ b/presentation/build.gradle.kts @@ -1,10 +1,16 @@ plugins { id("kr.genti.androidApplication") + id("kr.genti.version") } android { namespace = "kr.genti.presentation" + defaultConfig { + buildConfigField("String", "VERSION_NAME", "\"${extra["versionName"]}\"") + buildConfigField("String", "VERSION_CODE", "\"${extra["versionCode"]}\"") + } + buildFeatures { dataBinding = true viewBinding = true From 3f0fbf97417c62b1fdc0e90836f6ff4bb618bcdc Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Thu, 21 Nov 2024 15:12:47 +0900 Subject: [PATCH 17/24] =?UTF-8?q?[FIX/#171]=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=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 --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 85ce3f90..260070dd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -61,8 +61,8 @@ kakao = "2.20.3" # Testing junit = "4.13.2" -espresso = "3.3.0" -androidx-test = "1.1.2" +espresso = "3.5.1" +androidx-test = "1.1.5" # Timber timber = "5.0.1" From e57c043c596d5b84519ab4bd7a469d56579b3f3d Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Thu, 21 Nov 2024 17:08:08 +0900 Subject: [PATCH 18/24] =?UTF-8?q?[FIX/#171]=20AGP=20&=20gradle=20version?= =?UTF-8?q?=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 260070dd..03d935ba 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] # Build Tools -agp = "8.1.4" +agp = "8.1.2" # Kotlin kotlin = "1.8.20" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d7c014f1..43368ec1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed May 01 02:58:14 KST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 19b3bf8684159be78cf0d83e21c69162ceefd9e3 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Thu, 21 Nov 2024 17:51:08 +0900 Subject: [PATCH 19/24] =?UTF-8?q?[FIX/#171]=20=EA=B0=81=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20androidLibrary=20=ED=94=8C=EB=9F=AC=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B4=80=EB=A0=A8=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 1 - .../kr/genti/convention/plugin/AndroidLibraryPlugin.kt | 2 ++ core/build.gradle.kts | 2 +- data/build.gradle.kts | 2 +- presentation/build.gradle.kts | 10 +++++++--- .../presentation/generate/verify/VerifyActivity.kt | 2 +- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5bcd6db0..8f6ca12a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -55,5 +55,4 @@ dependencies { implementation(platform(libs.okhttp.bom)) implementation(libs.bundles.networking) implementation(libs.kakao) - implementation("com.android.tools.build:aapt2:8.1.4-10154469") } diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt index e3594ed2..eee536dc 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt @@ -41,6 +41,8 @@ class AndroidLibraryPlugin : Plugin { buildFeatures { buildConfig = true + dataBinding = true + viewBinding = true } } } diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 343dc31f..041fe5a5 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("kr.genti.androidApplication") + id("kr.genti.androidLibrary") } android { diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 145a3d60..61889a67 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("kr.genti.androidApplication") + id("kr.genti.androidLibrary") } android { diff --git a/presentation/build.gradle.kts b/presentation/build.gradle.kts index ba36b5e4..7f78db53 100644 --- a/presentation/build.gradle.kts +++ b/presentation/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("kr.genti.androidApplication") + id("kr.genti.androidLibrary") id("kr.genti.version") } @@ -23,9 +23,13 @@ dependencies { implementation(platform(libs.okhttp.bom)) implementation(libs.bundles.networking) - implementation(libs.bundles.androidx) - implementation(libs.bundles.ui) + implementation(platform(libs.firebase.bom)) implementation(libs.bundles.firebase) + + implementation(libs.bundles.androidx) + implementation(libs.bundles.ui) implementation(libs.kakao) + implementation(libs.app.update) + implementation(libs.amplitude) } diff --git a/presentation/src/main/java/kr/genti/presentation/generate/verify/VerifyActivity.kt b/presentation/src/main/java/kr/genti/presentation/generate/verify/VerifyActivity.kt index abf634a6..79b6826a 100644 --- a/presentation/src/main/java/kr/genti/presentation/generate/verify/VerifyActivity.kt +++ b/presentation/src/main/java/kr/genti/presentation/generate/verify/VerifyActivity.kt @@ -215,7 +215,7 @@ class VerifyActivity : BaseActivity(R.layout.activity_ver ) } }.onSuccess { - cameraLauncher.launch(photoUri) + photoUri?.let { cameraLauncher.launch(it) } } } else { toast(stringOf(R.string.error_msg)) From d1f6fc8f56dbe1f6e9a765c3f72d4c82329aa1c3 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 22 Nov 2024 17:39:56 +0900 Subject: [PATCH 20/24] =?UTF-8?q?[FIX/#171]=20buildConfigField=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt | 3 --- presentation/build.gradle.kts | 5 ----- 2 files changed, 8 deletions(-) diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt index eee536dc..bec5c5d6 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/AndroidLibraryPlugin.kt @@ -25,9 +25,6 @@ class AndroidLibraryPlugin : Plugin { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") - - buildConfigField("String", "VERSION_NAME", "\"${Constants.versionName}\"") - buildConfigField("String", "VERSION_CODE", "\"${Constants.versionCode}\"") } compileOptions { diff --git a/presentation/build.gradle.kts b/presentation/build.gradle.kts index 7f78db53..29284339 100644 --- a/presentation/build.gradle.kts +++ b/presentation/build.gradle.kts @@ -10,11 +10,6 @@ android { buildConfigField("String", "VERSION_NAME", "\"${extra["versionName"]}\"") buildConfigField("String", "VERSION_CODE", "\"${extra["versionCode"]}\"") } - - buildFeatures { - dataBinding = true - viewBinding = true - } } dependencies { From be09c80b0a9f83f1dcb6113df1439daac102d9d3 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 22 Nov 2024 17:59:03 +0900 Subject: [PATCH 21/24] =?UTF-8?q?[FIX/#171]=20kotlin.plugin.serialization?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/kr/genti/convention/config/CommonPluginConfig.kt | 1 + build.gradle.kts | 1 + gradle/libs.versions.toml | 1 + 3 files changed, 3 insertions(+) diff --git a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt index 5a89b957..448685b5 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/config/CommonPluginConfig.kt @@ -17,6 +17,7 @@ fun Project.configureAndroidCommonPlugin() { apply() with(plugins) { apply("kotlin-parcelize") + apply("org.jetbrains.kotlin.plugin.serialization") } val libs = extensions.getByType().named("libs") diff --git a/build.gradle.kts b/build.gradle.kts index 5e50908e..5e93e036 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,6 +8,7 @@ buildscript { plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.hilt) apply false alias(libs.plugins.google.services) apply false alias(libs.plugins.google.crashlytics) apply false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 03d935ba..87fb29ec 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -195,6 +195,7 @@ firebase = [ [plugins] android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } google-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "crashlytics" } From bb8d71f45da271452e7d293a02f66eba1ba188d6 Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 22 Nov 2024 18:08:15 +0900 Subject: [PATCH 22/24] =?UTF-8?q?[FIX/#171]=20=EB=AF=B8=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=20androidx=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 87fb29ec..83b20a59 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,14 +10,10 @@ androidx-core-ktx = "1.13.1" androidx-core-splashscreen = "1.0.1" androidx-appcompat = "1.7.0" androidx-activity-ktx = "1.9.0" -androidx-lifecycle = "2.8.3" androidx-lifecycle-runtime-ktx = "2.8.7" -androidx-datastore = "1.1.1" androidx-navigation = "2.7.7" androidx-fragment-ktx = "1.5.7" -androidx-startup = "1.1.1" androidx-legacy-support = "1.0.0" -androidx-security-crypto = "1.1.0-alpha06" androidx-constraint-layout = "2.1.4" # Google @@ -84,14 +80,10 @@ androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscree androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" } androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidx-activity-ktx" } androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-runtime-ktx" } -androidx-lifecycle = { group = "androidx.lifecycle", name = "lifecycle-common-java8", version.ref = "androidx-lifecycle" } -androidx-datastore = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "androidx-datastore" } androidx-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "androidx-navigation" } androidx-navigation-ui = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "androidx-navigation" } androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "androidx-fragment-ktx" } -androidx-startup = { group = "androidx.startup", name = "startup-runtime", version.ref = "androidx-startup" } androidx-legacy-support = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "androidx-legacy-support" } -androidx-security-crypto = { group = "androidx.security", name = "security-crypto", version.ref = "androidx-security-crypto" } androidx-constraint-layout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraint-layout" } # MaterialDesign @@ -156,14 +148,10 @@ androidx = [ "androidx-appcompat", "androidx-activity-ktx", "androidx-lifecycle-runtime-ktx", - "androidx-lifecycle", - "androidx-datastore", "androidx-navigation-fragment", "androidx-navigation-ui", "androidx-fragment-ktx", - "androidx-startup", "androidx-legacy-support", - "androidx-security-crypto", "androidx-constraint-layout" ] From fd8b074cb6c5590d9ab3810354b663997944a85a Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 22 Nov 2024 18:52:41 +0900 Subject: [PATCH 23/24] =?UTF-8?q?[FIX/#171]=20Test=20implementation=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 --- .../kr/genti/convention/plugin/TestPlugin.kt | 6 ++-- gradle/libs.versions.toml | 28 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt index 2b3dfa54..6c931b49 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt @@ -13,9 +13,9 @@ class TestPlugin : Plugin { val libs = extensions.getVersionCatalog() dependencies { - testImplementation(libs.getLibrary("jUnit")) - androidTestImplementation(libs.getLibrary("android-test")) - androidTestImplementation(libs.getLibrary("espresso")) + testImplementation(libs.getLibrary("j-unit")) + androidTestImplementation(libs.getLibrary("j-unit-androidx-test")) + androidTestImplementation(libs.getLibrary("espresso-core")) } } } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 83b20a59..d09d4de3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ androidx-core-splashscreen = "1.0.1" androidx-appcompat = "1.7.0" androidx-activity-ktx = "1.9.0" androidx-lifecycle-runtime-ktx = "2.8.7" -androidx-navigation = "2.7.7" +androidx-navigation-ktx = "2.7.7" androidx-fragment-ktx = "1.5.7" androidx-legacy-support = "1.0.0" androidx-constraint-layout = "2.1.4" @@ -27,7 +27,7 @@ hilt = "2.46.1" # Networking retrofit = "2.9.0" okhttp = "4.11.0" -json-converter = "1.0.0" +retrofit-serialization-converter = "1.0.0" # Kotlin Extensions kotlin-serialization = "1.5.1" @@ -52,7 +52,7 @@ amplitude = "1.17.3" firebase-bom = "33.1.2" crashlytics = "2.9.9" -# Kakao SDK +# Kakao kakao = "2.20.3" # Testing @@ -69,7 +69,7 @@ android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", ver kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } # Kotlin -kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } +kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } kotlin-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlin-serialization" } kotlin-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlin-datetime" } kotlin-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlin-coroutines" } @@ -80,8 +80,8 @@ androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscree androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" } androidx-activity-ktx = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidx-activity-ktx" } androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-runtime-ktx" } -androidx-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "androidx-navigation" } -androidx-navigation-ui = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "androidx-navigation" } +androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "androidx-navigation-ktx" } +androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "androidx-navigation-ktx" } androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "androidx-fragment-ktx" } androidx-legacy-support = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "androidx-legacy-support" } androidx-constraint-layout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraint-layout" } @@ -95,7 +95,7 @@ hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.r # Networking retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } -retrofit-json-converter = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "json-converter" } +retrofit-serialization-converter = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "retrofit-serialization-converter" } okhttp-bom = { group = "com.squareup.okhttp3", name = "okhttp-bom", version.ref = "okhttp" } okhttp = { group = "com.squareup.okhttp3", name = "okhttp" } okhttp-logging-interceptor = { group = "com.squareup.okhttp3", name = "logging-interceptor" } @@ -124,9 +124,9 @@ firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging kakao = { group = "com.kakao.sdk", name = "v2-user", version.ref = "kakao" } # Testing -jUnit = { group = "junit", name = "junit", version.ref = "junit" } -android-test = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test" } -espresso = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso" } +j-unit = { group = "junit", name = "junit", version.ref = "junit" } +j-unit-androidx-test = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test" } +espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso" } # App Update app-update = { group = "com.google.android.play", name = "app-update-ktx", version.ref = "app-update" } @@ -136,7 +136,7 @@ timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "tim [bundles] kotlin = [ - "kotlin", + "kotlin-stdlib", "kotlin-serialization", "kotlin-datetime", "kotlin-coroutines", @@ -148,8 +148,8 @@ androidx = [ "androidx-appcompat", "androidx-activity-ktx", "androidx-lifecycle-runtime-ktx", - "androidx-navigation-fragment", - "androidx-navigation-ui", + "androidx-navigation-fragment-ktx", + "androidx-navigation-ui-ktx", "androidx-fragment-ktx", "androidx-legacy-support", "androidx-constraint-layout" @@ -157,7 +157,7 @@ androidx = [ networking = [ "retrofit", - "retrofit-json-converter", + "retrofit-serialization-converter", "okhttp", "okhttp-logging-interceptor" ] From 1d237c34572623ab4d11f4d48fda2eddacaa944c Mon Sep 17 00:00:00 2001 From: Sangho Kim Date: Fri, 22 Nov 2024 19:05:16 +0900 Subject: [PATCH 24/24] =?UTF-8?q?[FIX/#171]=20ExtensionContainerExt=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../convention/extension/ExtensionContainerExt.kt | 10 ---------- .../kr/genti/convention/extension/VersionCatalogExt.kt | 1 - .../main/java/kr/genti/convention/plugin/HiltPlugin.kt | 3 +-- .../kr/genti/convention/plugin/JavaLibraryPlugin.kt | 3 +-- .../java/kr/genti/convention/plugin/KotlinPlugin.kt | 3 +-- .../main/java/kr/genti/convention/plugin/TestPlugin.kt | 3 +-- 6 files changed, 4 insertions(+), 19 deletions(-) delete mode 100644 build-logic/convention/src/main/java/kr/genti/convention/extension/ExtensionContainerExt.kt diff --git a/build-logic/convention/src/main/java/kr/genti/convention/extension/ExtensionContainerExt.kt b/build-logic/convention/src/main/java/kr/genti/convention/extension/ExtensionContainerExt.kt deleted file mode 100644 index 310bfc5e..00000000 --- a/build-logic/convention/src/main/java/kr/genti/convention/extension/ExtensionContainerExt.kt +++ /dev/null @@ -1,10 +0,0 @@ -package kr.genti.convention.extension - -import org.gradle.api.artifacts.VersionCatalog -import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.api.plugins.ExtensionContainer -import org.gradle.kotlin.dsl.getByType - -fun ExtensionContainer.getVersionCatalog(): VersionCatalog { - return getByType().named("libs") -} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/kr/genti/convention/extension/VersionCatalogExt.kt b/build-logic/convention/src/main/java/kr/genti/convention/extension/VersionCatalogExt.kt index faf80f4a..c8f9686b 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/extension/VersionCatalogExt.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/extension/VersionCatalogExt.kt @@ -3,7 +3,6 @@ package kr.genti.convention.extension import org.gradle.api.artifacts.ExternalModuleDependencyBundle import org.gradle.api.artifacts.MinimalExternalModuleDependency import org.gradle.api.artifacts.VersionCatalog -import org.gradle.api.artifacts.VersionConstraint import org.gradle.api.provider.Provider fun VersionCatalog.getBundle(bundleName: String): Provider = diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt index 6263dcfe..630cba21 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/HiltPlugin.kt @@ -1,9 +1,9 @@ package kr.genti.convention.plugin import kr.genti.convention.extension.getLibrary -import kr.genti.convention.extension.getVersionCatalog import kr.genti.convention.extension.implementation import kr.genti.convention.extension.kapt +import kr.genti.convention.extension.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies @@ -15,7 +15,6 @@ class HiltPlugin : Plugin { apply("dagger.hilt.android.plugin") } - val libs = extensions.getVersionCatalog() dependencies { implementation(libs.getLibrary("hilt")) kapt(libs.getLibrary("hilt-compiler")) diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt index 84d4252a..4866aa5b 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/JavaLibraryPlugin.kt @@ -2,8 +2,8 @@ package kr.genti.convention.plugin import kr.genti.convention.Constants import kr.genti.convention.extension.getBundle -import kr.genti.convention.extension.getVersionCatalog import kr.genti.convention.extension.implementation +import kr.genti.convention.extension.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.JavaPluginExtension @@ -23,7 +23,6 @@ class JavaLibraryPlugin : Plugin { targetCompatibility = Constants.JAVA_VERSION } - val libs = extensions.getVersionCatalog() dependencies { implementation(libs.getBundle("kotlin")) } diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/KotlinPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/KotlinPlugin.kt index 388572a5..98042b25 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/KotlinPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/KotlinPlugin.kt @@ -1,8 +1,8 @@ package kr.genti.convention.plugin import kr.genti.convention.extension.getBundle -import kr.genti.convention.extension.getVersionCatalog import kr.genti.convention.extension.implementation +import kr.genti.convention.extension.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies @@ -13,7 +13,6 @@ class KotlinPlugin : Plugin { apply("kotlin-android") } - val libs = extensions.getVersionCatalog() dependencies { implementation(libs.getBundle("kotlin")) } diff --git a/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt b/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt index 6c931b49..07f27941 100644 --- a/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt +++ b/build-logic/convention/src/main/java/kr/genti/convention/plugin/TestPlugin.kt @@ -2,7 +2,7 @@ package kr.genti.convention.plugin import kr.genti.convention.extension.androidTestImplementation import kr.genti.convention.extension.getLibrary -import kr.genti.convention.extension.getVersionCatalog +import kr.genti.convention.extension.libs import kr.genti.convention.extension.testImplementation import org.gradle.api.Plugin import org.gradle.api.Project @@ -11,7 +11,6 @@ import org.gradle.kotlin.dsl.dependencies class TestPlugin : Plugin { override fun apply(target: Project) = with(target) { - val libs = extensions.getVersionCatalog() dependencies { testImplementation(libs.getLibrary("j-unit")) androidTestImplementation(libs.getLibrary("j-unit-androidx-test"))