From da0f4ea82cb28182e50ea8c2150c62da5f4880a1 Mon Sep 17 00:00:00 2001 From: chanho0908 Date: Mon, 29 Dec 2025 00:21:56 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=94=A5=20Firebase=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=EC=97=B0=EB=8F=99=20=EB=B0=8F=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Firebase 프로젝트를 연동하고 Crashlytics, Analytics, Cloud Messaging 서비스를 설정합니다. google-services.json 파일은 .gitignore에 추가하여 버전 관리에서 제외합니다. 🤖 Generated with [Firebender](https://firebender.com) Co-Authored-By: Firebender --- .gitignore | 2 +- app/build.gradle.kts | 7 +++++++ .../com/twix/convention/FeatureConventionPlugin.kt | 7 +++++++ build.gradle.kts | 2 ++ gradle/libs.versions.toml | 9 +++++++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d0dffdd..c997f1a 100644 --- a/.gitignore +++ b/.gitignore @@ -53,7 +53,7 @@ render.experimental.xml .cxx/ # Google Services (e.g. APIs or Firebase) -# google-services.json +google-services.json # Freeline freeline.zip diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c1b6468..719b590 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,8 @@ plugins { alias(libs.plugins.twix.android.application) alias(libs.plugins.twix.koin) + alias(libs.plugins.google.firebase.crashlytics) + id("com.google.gms.google-services") } android { @@ -32,4 +34,9 @@ dependencies { implementation(projects.data) implementation(projects.domain) implementation(projects.feature.login) + + // Firebase + implementation(platform(libs.google.firebase.bom)) + implementation(libs.google.firebase.analytics) + implementation(libs.google.firebase.messaging) } diff --git a/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt index 1f56f4c..b970171 100644 --- a/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt @@ -1,6 +1,8 @@ package com.twix.convention import com.twix.convention.extension.implementation +import com.twix.convention.extension.library +import com.twix.convention.extension.libs import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.dependencies @@ -14,5 +16,10 @@ class FeatureConventionPlugin : BuildLogicConventionPlugin({ implementation(project(":core:navigation")) implementation(project(":core:ui")) implementation(project(":domain")) + + val bom = libs.library("google-firebase-bom") + implementation(platform(bom)) + implementation(libs.library("google-firebase-crashlytics")) + implementation(libs.library("google-firebase-analytics")) } }) diff --git a/build.gradle.kts b/build.gradle.kts index 524b691..4035384 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,6 +7,8 @@ plugins { alias(libs.plugins.serialization) apply false alias(libs.plugins.jetbrains.kotlin.jvm) apply false alias(libs.plugins.android.library) apply false + alias(libs.plugins.google.services) apply false + alias(libs.plugins.google.firebase.crashlytics) apply false } allprojects { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7cc8770..ab16350 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,6 +18,9 @@ androidx-lifecycle-runtime-ktx = "2.10.0" # Google material = "1.13.0" +google-services = "4.4.4" +google-firebase-bom = "34.0.0" +google-firebase-crashlytics = "3.0.2" # Compose activity-compose = "1.12.0" @@ -64,6 +67,10 @@ android-junit5-gradle-plugin = { group = "de.mannodermaus.gradle.plugins", name # Google material = { group = "com.google.android.material", name = "material", version.ref = "material" } +google-firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "google-firebase-bom" } +google-firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics" } +google-firebase-analytics = { module = "com.google.firebase:firebase-analytics" } +google-firebase-messaging = { module = "com.google.firebase:firebase-messaging" } # Kotlin kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinx-coroutines-core" } @@ -168,6 +175,8 @@ ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "jetbrains-kotlin-jvm" } android-library = { id = "com.android.library", version.ref = "agp" } +google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } +google-firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "google-firebase-crashlytics" } # Convention Plugins twix-android-application = { id = "twix.android.application", version = "unspecified" } From 2a503fc6f509e37c69f4ff240ff6aa821b05b0ff Mon Sep 17 00:00:00 2001 From: chanho0908 Date: Mon, 29 Dec 2025 12:00:43 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Google=20Services=20?= =?UTF-8?q?=ED=94=8C=EB=9F=AC=EA=B7=B8=EC=9D=B8=EC=9D=84=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EC=B9=B4=ED=83=88=EB=A1=9C=EA=B7=B8=EB=A1=9C=20?= =?UTF-8?q?=EB=A7=88=EC=9D=B4=EA=B7=B8=EB=A0=88=EC=9D=B4=EC=85=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 719b590..18c90bb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,7 +2,7 @@ plugins { alias(libs.plugins.twix.android.application) alias(libs.plugins.twix.koin) alias(libs.plugins.google.firebase.crashlytics) - id("com.google.gms.google-services") + alias(libs.plugins.google.services) } android { From 58f3fe0856f138e4c85041ec182aca9257ff10c5 Mon Sep 17 00:00:00 2001 From: chanho0908 Date: Mon, 29 Dec 2025 12:28:11 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 3 +-- .../kotlin/com/twix/convention/FeatureConventionPlugin.kt | 7 ------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 18c90bb..f84666b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -37,6 +37,5 @@ dependencies { // Firebase implementation(platform(libs.google.firebase.bom)) - implementation(libs.google.firebase.analytics) - implementation(libs.google.firebase.messaging) + implementation(libs.google.firebase.crashlytics) } diff --git a/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt index b970171..1f56f4c 100644 --- a/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt @@ -1,8 +1,6 @@ package com.twix.convention import com.twix.convention.extension.implementation -import com.twix.convention.extension.library -import com.twix.convention.extension.libs import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.dependencies @@ -16,10 +14,5 @@ class FeatureConventionPlugin : BuildLogicConventionPlugin({ implementation(project(":core:navigation")) implementation(project(":core:ui")) implementation(project(":domain")) - - val bom = libs.library("google-firebase-bom") - implementation(platform(bom)) - implementation(libs.library("google-firebase-crashlytics")) - implementation(libs.library("google-firebase-analytics")) } }) From a8221021c230cd3103e82cedff32697bbecc7c02 Mon Sep 17 00:00:00 2001 From: chanho0908 Date: Mon, 29 Dec 2025 12:39:04 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=E2=9E=95=20Analytics=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20Feature=20=ED=94=8C?= =?UTF-8?q?=EB=9F=AC=EA=B7=B8=EC=9D=B8=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Firebase Analytics를 위한 core:analytics 모듈을 생성하고, 모든 Feature 모듈에서 자동으로 사용할 수 있도록 FeatureConventionPlugin에 통합했습니다. 🤖 Generated with [Firebender](https://firebender.com) Co-Authored-By: Firebender --- .../com/twix/convention/FeatureConventionPlugin.kt | 1 + core/analytics/build.gradle.kts | 13 +++++++++++++ core/analytics/src/main/AndroidManifest.xml | 4 ++++ .../src/main/kotlin/com/twix/analytics/di/.gitKeep | 0 settings.gradle.kts | 1 + 5 files changed, 19 insertions(+) create mode 100644 core/analytics/build.gradle.kts create mode 100644 core/analytics/src/main/AndroidManifest.xml create mode 100644 core/analytics/src/main/kotlin/com/twix/analytics/di/.gitKeep diff --git a/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt index 1f56f4c..fb110ff 100644 --- a/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/com/twix/convention/FeatureConventionPlugin.kt @@ -10,6 +10,7 @@ class FeatureConventionPlugin : BuildLogicConventionPlugin({ apply() dependencies { + implementation(project(":core:analytics")) implementation(project(":core:design-system")) implementation(project(":core:navigation")) implementation(project(":core:ui")) diff --git a/core/analytics/build.gradle.kts b/core/analytics/build.gradle.kts new file mode 100644 index 0000000..83f559f --- /dev/null +++ b/core/analytics/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + alias(libs.plugins.twix.android.library) + alias(libs.plugins.twix.koin) +} + +android { + namespace = "com.twix.analytics" +} + +dependencies { + implementation(platform(libs.google.firebase.bom)) + api(libs.google.firebase.analytics) +} diff --git a/core/analytics/src/main/AndroidManifest.xml b/core/analytics/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8bdb7e1 --- /dev/null +++ b/core/analytics/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/core/analytics/src/main/kotlin/com/twix/analytics/di/.gitKeep b/core/analytics/src/main/kotlin/com/twix/analytics/di/.gitKeep new file mode 100644 index 0000000..e69de29 diff --git a/settings.gradle.kts b/settings.gradle.kts index 9cc7038..e8d75d0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -34,3 +34,4 @@ include(":core:ui") include(":core:navigation") include(":core:design-system") include(":core:network") +include(":core:analytics") From d6a2fe8bc0f33ef09766034862974efee322fd29 Mon Sep 17 00:00:00 2001 From: chanho0908 Date: Mon, 29 Dec 2025 12:39:04 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=E2=9E=95=20Analytics=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20Feature=20=ED=94=8C?= =?UTF-8?q?=EB=9F=AC=EA=B7=B8=EC=9D=B8=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Firebase Analytics를 위한 core:analytics 모듈을 생성하고, 모든 Feature 모듈에서 자동으로 사용할 수 있도록 FeatureConventionPlugin에 통합했습니다. 🤖 Generated with [Firebender](https://firebender.com) Co-Authored-By: Firebender --- 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 ab16350..095e860 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,8 +19,8 @@ androidx-lifecycle-runtime-ktx = "2.10.0" # Google material = "1.13.0" google-services = "4.4.4" -google-firebase-bom = "34.0.0" -google-firebase-crashlytics = "3.0.2" +google-firebase-bom = "34.7.0" +google-firebase-crashlytics = "3.0.6" # Compose activity-compose = "1.12.0" From 19712b21226a094475b1abb74a459104ff25a526 Mon Sep 17 00:00:00 2001 From: chanho0908 Date: Mon, 29 Dec 2025 12:46:23 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=99=88=20.cursorrules=EB=A5=BC=20Git?= =?UTF-8?q?=20=EC=B6=94=EC=A0=81=EC=97=90=EC=84=9C=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 개발 환경별 설정 파일인 .cursorrules를 .gitignore에 추가하여 버전 관리에서 제외합니다. 🤖 Generated with [Firebender](https://firebender.com) Co-Authored-By: Firebender --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index c997f1a..24cc952 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,6 @@ lint/tmp/ # macOS .DS_Store + +# Cursor IDE +.cursorrules