Newer
Older
DummyAnd / app / build.gradle
// Load a specific properties file to access the keystore if exists
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file("keystore.properties")

if (keystorePropertiesFile.exists()) {
    // Load keystore properties from file
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
} else {
    // Load keystore properties from environment
    def env = System.getenv()
    if (env['ANDROID_KEYALIAS']) keystoreProperties.put('keyAlias', env['ANDROID_KEYALIAS'])
    else keystoreProperties.put('keyAlias', "dappre")
    if (env['ANDROID_KEYPASSWORD']) keystoreProperties.put('keyPassword', env['ANDROID_KEYPASSWORD'])
    else keystoreProperties.put('keyPassword', "dappre")
    if (env['ANDROID_STOREFILE']) keystoreProperties.put('storeFile', env['ANDROID_STOREFILE'])
    else keystoreProperties.put('storeFile', ".")
    if (env['ANDROID_STOREPASSWORD']) keystoreProperties.put('storePassword', env['ANDROID_STOREPASSWORD'])
    else keystoreProperties.put('storePassword', "dappre")
}

apply plugin: 'com.android.application'
//apply plugin: 'jacoco'
apply plugin: 'kotlin-android'
//apply plugin: 'kotlinx-serialization'
//apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
//apply plugin: 'kotlin-allopen'
//apply plugin: 'androidx.navigation.safeargs.kotlin'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.gms.google-services'

android {
    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }

    compileSdkVersion build_versions.compile_sdk
    buildToolsVersion build_versions.build_tools

    buildFeatures {
        dataBinding = true
        // for view binding :
        // viewBinding = true
    }

    kapt {
        correctErrorTypes true
        javacOptions {
            // Increase the max count of errors from annotation processors.
            // Default is 100.
            option("-Xmaxerrs", 500)
        }
    }

    defaultConfig {
        applicationId "net.dolden.dummyand"
        minSdkVersion build_versions.min_sdk
        targetSdkVersion build_versions.target_sdk
        versionCode project.hasProperty('versionCode') ? project.property('versionCode') as int : 90
        versionName project.hasProperty('versionName') ? project.property('versionName') : "0.0.6"
        vectorDrawables.useSupportLibrary true
        multiDexEnabled true

        buildConfigField "boolean", "CRASHLYTICS", "true"

        javaCompileOptions {
//            annotationProcessorOptions {
//                arguments = [
//                        "room.schemaLocation"  : "$projectDir/schemas".toString(),
//                        "room.incremental"     : "true",
//                        "room.expandProjection": "true"]
//            }
        }
    }

    dexOptions {
        maxProcessCount 1
        threadCount 4
        javaMaxHeapSize "512m"
        preDexLibraries false
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            // When minifyEnabled is set to true, Crashlytics automatically
            // uploads mapping files because the plugin detects that obfuscation
            // is enabled. mappingFileUploadEnabled defaults to true if
            // minifyEnabled is true.
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-glide.pro', 'proguard-rules.pro'
            debuggable false
//            manifestPlaceholders = [allowBackup: true, fullBackupContent: true, crashlyticsCollectionEnabled: true]
        }
        debug {
            minifyEnabled false
//            firebaseCrashlytics {
//                // If you don't need crash reporting for your debug build,
//                // you can speed up your build by disabling mapping file uploading.
//                mappingFileUploadEnabled false
//            }

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-glide.pro', 'proguard-rules.pro'
            debuggable true
//            testCoverageEnabled !project.hasProperty('android.injected.invoked.from.ide')
//            manifestPlaceholders = [allowBackup: false, fullBackupContent: false, crashlyticsCollectionEnabled: false]
            ext.enableCrashlytics = false
        }
    }

    testOptions {
        unitTests.includeAndroidResources = true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
    sourceSets {
        androidTest.java.srcDirs += "src/test-common/java"
        test.java.srcDirs += "src/test-common/java"
//        test.java.srcDirs += "../networking/src/test/java"
    }
    lintOptions {
        lintConfig rootProject.file('lint.xml')
        checkReleaseBuilds false
    }

    flavorDimensions "env"

    productFlavors { // May need to match branch name, passed by Jenkins PL as environment variable named BRANCH_NAME

        acceptance {
            resValue "string", "app_name", "DummyAnd Acc"
            applicationIdSuffix ".acc"
//            manifestPlaceholders = [errorBaseUrl   : "https://card.dolden.net/card",
//                                    cardNodeBaseUrl: "https://card.dolden.net/card",
//                                    userNodeBaseUrl: "https://user.dolden.net/user"]
        }

        dev2 {
            resValue "string", "app_name", "DummyAnd Dev2"
            applicationIdSuffix ".dev2"
//            manifestPlaceholders = [errorBaseUrl   : "https://dev2-card.testonly.digital-me.nl/card",
//                                    cardNodeBaseUrl: "https://dev2-card.testonly.digital-me.nl/card",
//                                    userNodeBaseUrl: "https://dev2-user.testonly.digital-me.nl/user"]
        }

        production {
            resValue "string", "app_name", "DummyAnd"
//            manifestPlaceholders = [errorBaseUrl   : "https://card.digital-me.nl/card",
//                                    cardNodeBaseUrl: "https://card.digital-me.nl/card",
//                                    userNodeBaseUrl: "https://user.digital-me.nl/user"]
        }
    }

    applicationVariants.all { variant ->
        // Do something about all variants - previously used to copy/move some file around
    }
}

repositories {
    mavenCentral()
}

//jacoco {
//    toolVersion = "0.8.4+"
//}

buildscript {
    repositories {
        jcenter()
        google()
        mavenLocal()
    }
    dependencies {
//        classpath 'com.quinn.hunter:hunter-debug-plugin:0.9.7'
//        classpath 'com.quinn.hunter:hunter-timing-plugin:0.9.1'
//        classpath 'com.quinn.hunter:hunter-transform:0.9.3'
    }
}

//apply plugin: 'hunter-debug'
//
//debugHunterExt {
//    runVariant = 'DEBUG'
//}

//apply plugin: 'hunter-timing'
//timingHunterExt {
//    runVariant = 'DEBUG'
////    whitelist = ['com.quinn.hunter.timing.DataSource']
////    blacklist = ['com.quinn.hunter.timing.black']
//}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')

    // plugins
//    implementation 'com.quinn.hunter:hunter-debug-library:0.9.6'
//    implementation 'com.quinn.hunter:hunter-timing-library:0.9.4'

    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.2'

    // KAPT
//    kapt deps.room.compiler
//    kapt deps.glide.compiler
//    kapt 'androidx.annotation:annotation:1.1.0'

    //noinspection GradleDependency
//    kapt deps.data_binding_compiler
//    kapt deps.dagger.android_support_compiler
//    kapt deps.dagger.compiler

    // kapt deps.dagger.assisted_inject
//    kapt 'com.squareup.inject:assisted-inject-processor-dagger2:0.5.2'
//
//    kapt deps.lifecycle.compiler
    implementation deps.kotlin.stdlib8
//    implementation 'org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0-1.3.70-eap-274-2'
//    implementation 'com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.5.0'
    implementation deps.firebase_crashlytics
    implementation deps.firebase
//    implementation deps.firebase_messaging
//    implementation deps.firebase_dynamic_links
    implementation deps.firebase_analytics

    // [test] dependencies
    testImplementation deps.junit
    testImplementation deps.mockito.core

    implementation deps.support.app_compat
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.multidex:multidex:2.0.1'
}