Snippets

John build.gradle.kts

Created by John De la cruz
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension

plugins {
    id("com.android.application")
    id("com.google.firebase.appdistribution")
    id("com.google.firebase.crashlytics")
    id("kotlin-android")
    id("kotlin-kapt")
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    id("dagger.hilt.android.plugin")
    id("kotlin-parcelize")
    id("com.github.triplet.play")
    id("com.google.gms.google-services")
}

android {
    flavorDimensions += "version"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.programproductions.nativeandroid"
        versionName = "1.20.0"
        versionCode = 1999076670
        minSdk = 26
        targetSdk = 34
        testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"

        vectorDrawables {
            useSupportLibrary = true
        }
    }
    packaging {
        resources {
            excludes += "/META-INF/{AL2.0,LGPL2.1}"
        }
    }
    signingConfigs {
        create("release") {
            keyAlias = "programproductions-key"
            keyPassword = "lanyards8.skyscrapers"
            storeFile = file("../keystore/pp-keystore")
            storePassword = "lanyards8.skyscrapers"
        }
    }
    buildTypes {
        getByName("debug") {
            enableUnitTestCoverage = true
            isMinifyEnabled = false
            isShrinkResources = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )

            configure<CrashlyticsExtension> {
                mappingFileUploadEnabled =
                    false // to disable mapping file uploads (default=true if minifying)
                nativeSymbolUploadEnabled =
                    true // to enable NDK symbol file uploading (default=false)
                unstrippedNativeLibsDir =
                    "path/to/libs"
                // optional override to change the default unstripped native library path, only used in NDK builds
            }
        }
        getByName("release") {
            signingConfig = signingConfigs.named("release").get()
            isMinifyEnabled = true
            isShrinkResources = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )

            configure<CrashlyticsExtension> {
                mappingFileUploadEnabled =
                    true // to disable mapping file uploads (default=true if minifying)
                nativeSymbolUploadEnabled =
                    true // to enable NDK symbol file uploading (default=false)
                unstrippedNativeLibsDir =
                    "path/to/libs"
                // optional override to change the default unstripped native library path, only used in NDK builds
            }
        }
    }

    productFlavors {
        create("mock") {
            dimension = "version"
            resValue(
                "string",
                "push_notification_key",
                project.findProperty("MOCK_PUSH_NOTIFICATION_KEY").toString()
            )
            applicationIdSuffix = ".mock"
            buildConfigField(
                "String",
                "AUTHORITY_KEY",
                project.findProperty("AUTHORITY_KEY").toString()
            )
        }

        create("dev") {
            dimension = "version"
            resValue(
                "string",
                "push_notification_key",
                project.findProperty("DEV_PUSH_NOTIFICATION_KEY").toString()
            )
            applicationIdSuffix = ".dev"
            buildConfigField(
                "String",
                "AUTHORITY_KEY",
                project.findProperty("AUTHORITY_KEY").toString()
            )
        }
        create("uat") {
            dimension = "version"
            resValue(
                "string",
                "push_notification_key",
                project.findProperty("UAT_PUSH_NOTIFICATION_KEY").toString()
            )
            applicationIdSuffix = ".uat"
            buildConfigField(
                "String",
                "AUTHORITY_KEY",
                project.findProperty("AUTHORITY_KEY").toString()
            )
        }
        create("qa") {
            dimension = "version"
            resValue(
                "string",
                "push_notification_key",
                project.findProperty("QA_PUSH_NOTIFICATION_KEY").toString()
            )
            applicationIdSuffix = ".qa"
            buildConfigField(
                "String",
                "AUTHORITY_KEY",
                project.findProperty("AUTHORITY_KEY").toString()
            )
        }
        create("prod") {
            dimension = "version"
            resValue(
                "string",
                "push_notification_key",
                project.findProperty("PROD_PUSH_NOTIFICATION_KEY").toString()
            )
            buildConfigField(
                "String",
                "AUTHORITY_KEY",
                project.findProperty("AUTHORITY_KEY").toString()
            )
        }
    }

    buildFeatures {
        buildConfig = true
        viewBinding = true
        compose = true
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17.toString()
    }

    composeOptions {
        kotlinCompilerExtensionVersion = libs.versions.androidxComposeCompiler.get()
    }
    // https://kotlinlang.org/docs/kapt.html#non-existent-type-correction
    kapt {
        correctErrorTypes = true
    }

    namespace = "com.programproductions.nativeandroid"

}

play {
    serviceAccountCredentials.set(file("service_account.json"))
}

dependencies {

    // Appcompat
    implementation(libs.androidx.appcompat)
    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.activity.ktx)
    implementation(libs.support.annotations)

    // Compose
    implementation(platform(libs.androidx.compose.bom))
    androidTestImplementation(platform(libs.androidx.compose.bom))

    implementation(libs.androidx.compose.runtime)
    implementation(libs.androidx.compose.ui)
    implementation(libs.androidx.compose.ui.tooling)
    implementation(libs.androidx.compose.foundation)
    implementation(libs.androidx.compose.foundation.layout)
    implementation(libs.androidx.compose.material3)
    implementation(libs.androidx.compose.material.iconsExtended)
    implementation(libs.androidx.compose.runtime.livedata)

    // Calendar compat
    implementation(libs.compact.calendar.view)

    // Circle imageview
    implementation(libs.circleimageview)

    // Conductor
    implementation(libs.conductor)
    implementation(libs.conductor.viewpager)
    implementation(libs.conductor.viewpager2)

    // Coroutines
    implementation(libs.kotlinx.coroutines.core)
    implementation(libs.kotlinx.coroutines.android)

    // Data enum
    implementation(libs.dataenum)
    kapt(libs.dataenum.processor)

    // Date picker
    implementation(libs.materialdatetimepicker)

    // Firebase
    implementation(libs.firebase.crashlytics)
    implementation(libs.firebase.analytics)
    implementation(libs.firebase.core)
    implementation(libs.firebase.config.ktx)

    // This dependency depends on Salesforce SDK the max is 23.3.1 as of 2/5/2023
    implementation(libs.firebase.messaging)

    // Google play Services
    implementation(libs.play.services.gcm)

    // Glide
    implementation(libs.glide)
    annotationProcessor(libs.glide.compiler)

    // Gson
    implementation(libs.gson)

    // Java stream
    implementation(libs.stream)

    // Jsr250
    api(libs.jsr250.api)

    // Leakcanary debug
    debugImplementation(libs.leakcanary.android)

    // Google maps
    implementation(libs.places)
    implementation(libs.google.maps.services)
    implementation(libs.slf4j.simple)
    implementation(libs.android.maps.utils)
    implementation(libs.volley)

    // Okhttp log
    // define a BOM and its version
    implementation(platform(libs.okhttp.bom))

    // define any required OkHttp artifacts without version
    implementation(libs.okhttp)
    implementation(libs.logging.interceptor)
    implementation(libs.okhttp3.integration)

    // Paging
    implementation(libs.paging.runtime.ktx)

    // Recyclerview
    implementation(libs.recyclerview)

    // Retrofit
    implementation(libs.retrofit)
    implementation(libs.converter.gson)
    implementation(libs.converter.scalars)
    implementation(libs.adapter.rxjava2)
    implementation(libs.retrofit2.kotlin.coroutines.adapter)

    // Rx android
    implementation(libs.rxandroid)

    // Rx binding
    implementation(libs.rxbinding.appcompat)

    // Rxjava2
    implementation(libs.rxjava)

    // Salesforce
    implementation(libs.salesforcesdk)

    // Support design
    implementation(libs.material)
    implementation(libs.legacy.support.v4)

    // Timber
    implementation(libs.timber)

    // Dagger Core
    implementation(libs.dagger)
    kapt(libs.dagger.compiler)

    // Dagger Android
    api(libs.dagger.android)
    api(libs.dagger.android.support)
    kapt(libs.dagger.android.processor)

    // Dagger - Hilt
    implementation(libs.hilt.android)
    kapt(libs.hilt.android.compiler)

    // TimelineView
    implementation(libs.timelineview)

    // Exifinterface
    implementation(libs.exifinterface)

    // Image viewer
    implementation(libs.photoview)

    // view Models
    implementation(libs.lifecycle.livedata.ktx)
    implementation(libs.lifecycle.viewmodel.ktx)

    // Fragments
    implementation(libs.constraintlayout)
    implementation(libs.fragment.ktx)

    // Navigation
    implementation(libs.navigation.fragment.ktx)
    implementation(libs.navigation.ui.ktx)

    // Page dots indicator
    implementation(libs.dotsindicator)

    implementation(libs.lifecycle.extensions)

    // Room
    implementation(libs.room.ktx)
    implementation(libs.room.runtime)
    implementation(libs.room.paging)
    kapt(libs.room.compiler)

    // AndroidX Test - JVM testing
    testImplementation(libs.junit.ktx)
    testImplementation(libs.core.testing)
    testImplementation(libs.test.core.ktx)
    testImplementation(libs.robolectric)
    androidTestImplementation(libs.espresso.core)
    testImplementation(libs.json)
}

secrets {
    // File containing the default properties values GMP_KEY.
    defaultPropertiesFileName = "local.properties"
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.