Skip to content

Commit e7e0e46

Browse files
authored
Merge pull request #105 from YAPP-Github/BOOK-202-feature/#89
feat: Firebase Crashlytics, GA 연동
2 parents afa26ff + e289f24 commit e7e0e46

9 files changed

Lines changed: 67 additions & 0 deletions

File tree

.github/workflows/android-ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ jobs:
3939
run: |
4040
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
4141

42+
- name: Generate google-services.json
43+
run: echo '${{ secrets.GOOGLE_SERVICES }}' | base64 -d > ./app/google-services.json
44+
4245
- name: Code style checks
4346
run: |
4447
./gradlew ktlintCheck detekt

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ plugins {
66
alias(libs.plugins.booket.android.application)
77
alias(libs.plugins.booket.android.application.compose)
88
alias(libs.plugins.booket.android.hilt)
9+
alias(libs.plugins.booket.android.firebase)
910
}
1011

1112
android {

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@
3636
android:name="com.ninecraft.booket.initializer.KakaoSdkInitializer"
3737
android:value="androidx.startup" />
3838

39+
<meta-data
40+
android:name="com.ninecraft.booket.initializer.FirebaseCrashlyticsInitializer"
41+
android:value="androidx.startup" />
42+
3943
</provider>
4044

4145
<activity
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.ninecraft.booket.initializer
2+
3+
import android.content.Context
4+
import androidx.startup.Initializer
5+
import com.google.firebase.crashlytics.FirebaseCrashlytics
6+
import com.ninecraft.booket.BuildConfig
7+
8+
class FirebaseCrashlyticsInitializer : Initializer<Unit> {
9+
override fun create(context: Context) {
10+
FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = !BuildConfig.DEBUG
11+
}
12+
13+
override fun dependencies(): List<Class<out Initializer<*>>> {
14+
return emptyList()
15+
}
16+
}

build-logic/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ gradlePlugin {
1919
"android.library" to "AndroidLibraryConventionPlugin",
2020
"android.library.compose" to "AndroidLibraryComposeConventionPlugin",
2121
"android.feature" to "AndroidFeatureConventionPlugin",
22+
"android.firebase" to "AndroidFirebaseConventionPlugin",
2223
"android.hilt" to "AndroidHiltConventionPlugin",
2324
"android.retrofit" to "AndroidRetrofitConventionPlugin",
2425
"jvm.library" to "JvmLibraryConventionPlugin",
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
import com.ninecraft.booket.convention.Plugins
3+
import com.ninecraft.booket.convention.applyPlugins
4+
import com.ninecraft.booket.convention.implementation
5+
import com.ninecraft.booket.convention.libs
6+
import org.gradle.api.Plugin
7+
import org.gradle.api.Project
8+
import org.gradle.kotlin.dsl.dependencies
9+
10+
internal class AndroidFirebaseConventionPlugin : Plugin<Project> {
11+
override fun apply(target: Project) {
12+
with(target) {
13+
applyPlugins(
14+
Plugins.GOOGLE_SERVICES,
15+
Plugins.FIREBASE_CRASHLYTICS,
16+
)
17+
18+
dependencies {
19+
implementation(platform(libs.firebase.bom))
20+
implementation(libs.firebase.analytics)
21+
implementation(libs.firebase.crashlytics)
22+
}
23+
}
24+
}
25+
}

build-logic/src/main/kotlin/com/ninecraft/booket/convention/Plugins.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ object Plugins {
1313

1414
const val HILT = "dagger.hilt.android.plugin"
1515
const val KSP = "com.google.devtools.ksp"
16+
const val GOOGLE_SERVICES = "com.google.gms.google-services"
17+
const val FIREBASE_CRASHLYTICS = "com.google.firebase.crashlytics"
1618
}

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ plugins {
1313
alias(libs.plugins.android.library) apply false
1414
alias(libs.plugins.hilt) apply false
1515
alias(libs.plugins.ksp) apply false
16+
alias(libs.plugins.google.service) apply false
17+
alias(libs.plugins.firebase.crashlytics) apply false
1618
}
1719

1820
val excludeModules: String? by project

gradle/libs.versions.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ kotlin-ktlint-source = "0.50.0"
6767
androidx-test-ext-junit = "1.2.1"
6868
androidx-test-runner = "1.6.2"
6969

70+
## Firebase
71+
google-service = "4.4.3"
72+
firebase-bom = "33.16.0"
73+
firebase-crashlytics = "3.0.4"
74+
7075
[libraries]
7176
android-gradle-plugin = { group = "com.android.tools.build", name = "gradle", version.ref = "android-gradle-plugin" }
7277
kotlin-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
@@ -137,6 +142,10 @@ google-mlkit-text-recognition-korean = { group = "com.google.mlkit", name = "tex
137142
androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-ext-junit" }
138143
androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidx-test-runner" }
139144

145+
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebase-bom" }
146+
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics-ktx" }
147+
firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics-ktx" }
148+
140149
[plugins]
141150
gradle-dependency-handler-extensions = { id = "land.sungbin.dependency.handler.extensions", version.ref = "gradle-dependency-handler-extensions" }
142151

@@ -155,13 +164,17 @@ kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref =
155164
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
156165
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
157166

167+
google-service = { id = "com.google.gms.google-services", version.ref = "google-service" }
168+
firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebase-crashlytics" }
169+
158170
# Plugins defined by this project
159171
booket-android-application = { id = "booket.android.application", version = "unspecified" }
160172
booket-android-application-compose = { id = "booket.android.application.compose", version = "unspecified" }
161173
booket-android-library = { id = "booket.android.library", version = "unspecified" }
162174
booket-android-library-compose = { id = "booket.android.library.compose", version = "unspecified" }
163175
booket-android-retrofit = { id = "booket.android.retrofit", version = "unspecified" }
164176
booket-android-feature = { id = "booket.android.feature", version = "unspecified" }
177+
booket-android-firebase = { id = "booket.android.firebase", version = "unspecified" }
165178
booket-android-hilt = { id = "booket.android.hilt", version = "unspecified" }
166179
booket-jvm-library = { id = "booket.jvm.library", version = "unspecified" }
167180
booket-kotlin-library-serialization = { id = "booket.kotlin.library.serialization", version = "unspecified" }

0 commit comments

Comments
 (0)