All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.freeletics.gradle.monorepo.setup.CrashlyticsSetup.kt Maven / Gradle / Ivy

package com.freeletics.gradle.monorepo.setup

import com.freeletics.gradle.monorepo.tasks.ProcessGoogleResourcesTask.Companion.registerProcessGoogleResourcesTask
import com.freeletics.gradle.monorepo.util.computeInfoFromGit
import com.freeletics.gradle.util.androidApp
import com.freeletics.gradle.util.androidComponentsApp
import com.freeletics.gradle.util.getVersion
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension
import org.gradle.api.Project
import org.gradle.api.plugins.ExtensionAware

internal fun Project.configureCrashlytics(uploadNativeSymbols: Boolean) {
    plugins.apply("com.google.firebase.crashlytics")

    androidApp {
        buildTypes {
            named("debug") { debugType ->
                debugType.buildConfigField("boolean", "CRASHLYTICS_ENABLED", "false")
                (debugType as ExtensionAware).extensions.configure(CrashlyticsExtension::class.java) {
                    it.mappingFileUploadEnabled = false
                    it.nativeSymbolUploadEnabled = false
                }
            }

            named("release") { releaseType ->
                val enabled = computeInfoFromGit.get()
                releaseType.buildConfigField("boolean", "CRASHLYTICS_ENABLED", "$enabled")
                (releaseType as ExtensionAware).extensions.configure(CrashlyticsExtension::class.java) {
                    it.mappingFileUploadEnabled = enabled
                    it.nativeSymbolUploadEnabled = enabled && uploadNativeSymbols
                }
            }
        }
    }

    project.dependencies.add("releaseApi", "com.freeletics.gradle:minify-crashlytics:${project.getVersion("fgp")}")

    androidComponentsApp {
        onVariants { variant ->
            // dummy task to make the crashlytics plugin work without the google-services plugin
            registerProcessGoogleResourcesTask(variant)
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy