Merge pull request #105 from kirmanak/remove-firebase

Remove Google Analytics and Crashlytics
This commit is contained in:
Kirill Kamakin
2022-11-22 20:14:04 +01:00
committed by GitHub
9 changed files with 2 additions and 159 deletions

View File

@@ -8,8 +8,6 @@ plugins {
id("kotlin-kapt") id("kotlin-kapt")
id("androidx.navigation.safeargs.kotlin") id("androidx.navigation.safeargs.kotlin")
id("dagger.hilt.android.plugin") id("dagger.hilt.android.plugin")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
alias(libs.plugins.ksp) alias(libs.plugins.ksp)
alias(libs.plugins.appsweep) alias(libs.plugins.appsweep)
} }
@@ -17,8 +15,8 @@ plugins {
android { android {
defaultConfig { defaultConfig {
applicationId = "gq.kirmanak.mealient" applicationId = "gq.kirmanak.mealient"
versionCode = 21 versionCode = 22
versionName = "0.3.6" versionName = "0.3.7"
} }
signingConfigs { signingConfigs {
@@ -41,7 +39,6 @@ android {
buildTypes { buildTypes {
getByName("debug") { getByName("debug") {
ext["enableCrashlytics"] = false
enableUnitTestCoverage = true enableUnitTestCoverage = true
enableAndroidTestCoverage = true enableAndroidTestCoverage = true
} }
@@ -112,10 +109,6 @@ dependencies {
implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.datastore.preferences)
implementation(platform(libs.google.firebase.bom))
implementation(libs.google.firebase.analyticsKtx)
implementation(libs.google.firebase.crashlyticsKtx)
testImplementation(libs.junit) testImplementation(libs.junit)
implementation(libs.jetbrains.kotlinx.coroutinesAndroid) implementation(libs.jetbrains.kotlinx.coroutinesAndroid)

View File

@@ -1,47 +0,0 @@
{
"project_info": {
"project_number": "884522665560",
"project_id": "mealient",
"storage_bucket": "mealient.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:884522665560:android:929b43ee82b13a95f3ac2d",
"android_client_info": {
"package_name": "gq.kirmanak.mealient"
}
},
"oauth_client": [
{
"client_id": "884522665560-frdmmbdqh789nmdashj3fu4alk67pvjr.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "gq.kirmanak.mealient",
"certificate_hash": "c6b9c7bcf7148e9c92a88f0992d5175e4144ca2b"
}
},
{
"client_id": "884522665560-hgumk6mcc0tq32kuhb71d7jbt4ml5ifd.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyChGzjbOrF_aPwenmI85-sbV8zV_aSG6DY"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "884522665560-hgumk6mcc0tq32kuhb71d7jbt4ml5ifd.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

View File

@@ -4,7 +4,6 @@ import android.app.Application
import com.google.android.material.color.DynamicColors import com.google.android.material.color.DynamicColors
import dagger.hilt.android.HiltAndroidApp import dagger.hilt.android.HiltAndroidApp
import gq.kirmanak.mealient.architecture.configuration.BuildConfiguration import gq.kirmanak.mealient.architecture.configuration.BuildConfiguration
import gq.kirmanak.mealient.data.analytics.Analytics
import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.logging.Logger
import javax.inject.Inject import javax.inject.Inject
@@ -17,13 +16,9 @@ class App : Application() {
@Inject @Inject
lateinit var buildConfiguration: BuildConfiguration lateinit var buildConfiguration: BuildConfiguration
@Inject
lateinit var analytics: Analytics
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
logger.v { "onCreate() called" } logger.v { "onCreate() called" }
analytics.setIsEnabled(!buildConfiguration.isDebug())
DynamicColors.applyToActivitiesIfAvailable(this) DynamicColors.applyToActivitiesIfAvailable(this)
} }
} }

View File

@@ -1,6 +0,0 @@
package gq.kirmanak.mealient.data.analytics
interface Analytics {
fun setIsEnabled(enabled: Boolean)
}

View File

@@ -1,21 +0,0 @@
package gq.kirmanak.mealient.data.analytics
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import gq.kirmanak.mealient.logging.Logger
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class AnalyticsImpl @Inject constructor(
private val firebaseAnalytics: FirebaseAnalytics,
private val firebaseCrashlytics: FirebaseCrashlytics,
private val logger: Logger,
) : Analytics {
override fun setIsEnabled(enabled: Boolean) {
logger.v { "setIsEnabled() called with: enabled = $enabled" }
firebaseAnalytics.setAnalyticsCollectionEnabled(enabled)
firebaseCrashlytics.setCrashlyticsCollectionEnabled(enabled)
}
}

View File

@@ -5,16 +5,12 @@ import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.PreferenceDataStoreFactory import androidx.datastore.preferences.core.PreferenceDataStoreFactory
import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.preferencesDataStoreFile import androidx.datastore.preferences.preferencesDataStoreFile
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import dagger.Binds import dagger.Binds
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent import dagger.hilt.components.SingletonComponent
import gq.kirmanak.mealient.data.analytics.Analytics
import gq.kirmanak.mealient.data.analytics.AnalyticsImpl
import gq.kirmanak.mealient.data.storage.PreferencesStorage import gq.kirmanak.mealient.data.storage.PreferencesStorage
import gq.kirmanak.mealient.data.storage.PreferencesStorageImpl import gq.kirmanak.mealient.data.storage.PreferencesStorageImpl
import javax.inject.Singleton import javax.inject.Singleton
@@ -28,23 +24,9 @@ interface AppModule {
@Singleton @Singleton
fun provideDataStore(@ApplicationContext context: Context): DataStore<Preferences> = fun provideDataStore(@ApplicationContext context: Context): DataStore<Preferences> =
PreferenceDataStoreFactory.create { context.preferencesDataStoreFile("settings") } PreferenceDataStoreFactory.create { context.preferencesDataStoreFile("settings") }
@Provides
@Singleton
fun provideFirebaseAnalytics(@ApplicationContext context: Context): FirebaseAnalytics =
FirebaseAnalytics.getInstance(context)
@Provides
@Singleton
fun provideFirebaseCrashlytics(): FirebaseCrashlytics =
FirebaseCrashlytics.getInstance()
} }
@Binds @Binds
@Singleton @Singleton
fun bindPreferencesStorage(preferencesStorage: PreferencesStorageImpl): PreferencesStorage fun bindPreferencesStorage(preferencesStorage: PreferencesStorageImpl): PreferencesStorage
@Binds
@Singleton
fun bindAnalytics(analyticsImpl: AnalyticsImpl): Analytics
} }

View File

@@ -1,38 +0,0 @@
package gq.kirmanak.mealient.data.analytics
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import gq.kirmanak.mealient.test.BaseUnitTest
import io.mockk.impl.annotations.MockK
import io.mockk.verify
import org.junit.Before
import org.junit.Test
class AnalyticsImplTest : BaseUnitTest() {
@MockK(relaxUnitFun = true)
lateinit var firebaseAnalytics: FirebaseAnalytics
@MockK(relaxUnitFun = true)
lateinit var firebaseCrashlytics: FirebaseCrashlytics
lateinit var subject: Analytics
@Before
override fun setUp() {
super.setUp()
subject = AnalyticsImpl(firebaseAnalytics, firebaseCrashlytics, logger)
}
@Test
fun `when setIsEnabled expect call to analytics`() {
subject.setIsEnabled(true)
verify { firebaseAnalytics.setAnalyticsCollectionEnabled(eq(true)) }
}
@Test
fun `when setIsEnabled expect call to crashlytics`() {
subject.setIsEnabled(true)
verify { firebaseCrashlytics.setCrashlyticsCollectionEnabled(eq(true)) }
}
}

View File

@@ -7,8 +7,6 @@ buildscript {
dependencies { dependencies {
classpath(libs.android.gradlePlugin) classpath(libs.android.gradlePlugin)
classpath(libs.google.servicesPlugin)
classpath(libs.google.firebase.crashlyticsPlugin)
classpath(libs.google.dagger.hiltPlugin) classpath(libs.google.dagger.hiltPlugin)
classpath(libs.jetbrains.kotlinPlugin) classpath(libs.jetbrains.kotlinPlugin)
classpath(libs.jetbrains.serializationPlugin) classpath(libs.jetbrains.serializationPlugin)

View File

@@ -1,10 +1,6 @@
[versions] [versions]
# https://maven.google.com/web/index.html?q=com.android.tools.build#com.android.tools.build:gradle # https://maven.google.com/web/index.html?q=com.android.tools.build#com.android.tools.build:gradle
androidGradlePlugin = "7.3.1" androidGradlePlugin = "7.3.1"
# https://developers.google.com/android/guides/google-services-plugin
googleServicesPlugin = "4.3.14"
# https://mvnrepository.com/artifact/com.google.firebase/firebase-crashlytics-gradle
firebaseCrashlytics = "2.9.2"
# https://kotlinlang.org/docs/gradle.html # https://kotlinlang.org/docs/gradle.html
kotlin = "1.7.20" kotlin = "1.7.20"
# https://developer.android.com/jetpack/androidx/releases/navigation # https://developer.android.com/jetpack/androidx/releases/navigation
@@ -59,8 +55,6 @@ viewBindingDelegate = "1.5.6"
datastore = "1.0.0" datastore = "1.0.0"
# https://developer.android.com/jetpack/androidx/releases/security # https://developer.android.com/jetpack/androidx/releases/security
security = "1.0.0" security = "1.0.0"
# https://mvnrepository.com/artifact/com.google.firebase/firebase-bom?repo=google
firebase = "31.0.1"
# https://github.com/junit-team/junit4/releases # https://github.com/junit-team/junit4/releases
junit = "4.13.2" junit = "4.13.2"
# https://developer.android.com/jetpack/androidx/releases/test # https://developer.android.com/jetpack/androidx/releases/test
@@ -87,8 +81,6 @@ android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", ver
android-tools-desugar = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugar" } android-tools-desugar = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugar" }
android-material-material = { group = "com.google.android.material", name = "material", version.ref = "material" } android-material-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
google-servicesPlugin = { group = "com.google.gms", name = "google-services", version.ref = "googleServicesPlugin" }
google-dagger-hiltPlugin = { group = "com.google.dagger", name = "hilt-android-gradle-plugin", version.ref = "hilt" } google-dagger-hiltPlugin = { group = "com.google.dagger", name = "hilt-android-gradle-plugin", version.ref = "hilt" }
google-dagger-hiltAndroid = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } google-dagger-hiltAndroid = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
google-dagger-hiltCompiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" } google-dagger-hiltCompiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }
@@ -98,11 +90,6 @@ google-dagger-hiltAndroidTesting = { group = "com.google.dagger", name = "hilt-a
google-protobuf-javalite = { group = "com.google.protobuf", name = "protobuf-javalite", version.ref = "protobuf" } google-protobuf-javalite = { group = "com.google.protobuf", name = "protobuf-javalite", version.ref = "protobuf" }
google-protobuf-protoc = { group = "com.google.protobuf", name = "protoc", version.ref = "protobuf" } google-protobuf-protoc = { group = "com.google.protobuf", name = "protoc", version.ref = "protobuf" }
google-firebase-crashlyticsPlugin = { group = "com.google.firebase", name = "firebase-crashlytics-gradle", version.ref = "firebaseCrashlytics" }
google-firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebase" }
google-firebase-analyticsKtx = { group = "com.google.firebase", name = "firebase-analytics-ktx" }
google-firebase-crashlyticsKtx = { group = "com.google.firebase", name = "firebase-crashlytics-ktx" }
google-truth = { group = "com.google.truth", name = "truth", version.ref = "truth" } google-truth = { group = "com.google.truth", name = "truth", version.ref = "truth" }
jetbrains-kotlinPlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } jetbrains-kotlinPlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }