import org.jetbrains.kotlin.gradle.tasks.KotlinCompile // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext { kotlin_version = '1.8.22' core_version = '1.10.1' rxjava_version = '3.1.7' rxandroid_version = '3.0.2' rxkotlin_version = '3.0.1' room_version = '2.5.2' lifecycle_version = '2.6.2' dagger_version = '2.48' coroutines_version = '1.7.3' activity_version = '1.7.2' fragmentktx_version = '1.6.1' ormLite_version = '4.46' gson_version = '2.10.1' nav_version = '2.6.0' appcompat_version = '1.6.1' material_version = '1.9.0' gridlayout_version = '1.0.0' constraintlayout_version = '2.1.4' preferencektx_version = '1.2.1' commonslang3_version = '3.13.0' commonscodec_version = '1.16.0' guava_version = '32.1.2-jre' jodatime_version = '2.12.5' work_version = '2.8.1' tink_version = '1.10.0' json_version = '20230618' joda_version = '2.12.5' swipe_version = '1.1.0' junit_version = '4.13.2' junit_jupiter_version = '5.10.0' mockito_version = '4.6.1' dexmaker_version = '1.2' retrofit2_version = '2.9.0' okhttp3_version = '4.11.0' byteBuddy_version = '1.12.8' androidx_junit_version = '1.1.5' androidx_rules_version = '1.5.0' rxandroidble_version = '1.12.1' replayshare_version = '2.2.0' wearable_version = '2.9.0' play_services_wearable_version = '18.1.0' play_services_location_version = '21.0.1' kotlinx_datetime_version = '0.4.1' kotlinx_serialization_version = '1.6.0' caverock_androidsvg_version = '1.4' } repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.1.1' classpath 'com.google.gms:google-services:4.3.15' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" classpath "org.jacoco:org.jacoco.core:0.8.10" classpath "com.vanniktech:gradle-dependency-graph-generator-plugin:0.8.0" } } plugins { // Test Gradle build, keep disabled under normal circumstances // id "com.osacky.doctor" version "0.8.1" id "org.jlleitschuh.gradle.ktlint" version "11.5.1" // Aggregates and/or logs Jacoco test coverage to the Gradle build log id 'org.barfuin.gradle.jacocolog' version '3.1.0' id 'org.jetbrains.kotlin.android' version "$kotlin_version" apply false } allprojects { repositories { google() mavenCentral() maven { url "https://maven.google.com" } maven { url 'https://jitpack.io' } } tasks.withType(KotlinCompile).all { kotlinOptions { freeCompilerArgs = [ '-opt-in=kotlin.RequiresOptIn', '-Xjvm-default=all' //Support @JvmDefault ] jvmTarget = "11" } } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } apply plugin: 'org.jlleitschuh.gradle.ktlint' apply plugin: 'jacoco' } // Setup all al reports aggregation apply from: 'jacoco_project.gradle' task clean(type: Delete) { delete rootProject.buildDir } subprojects { tasks.withType(Test) { maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1 } } // This is necessary to prevent Gradle build errors like: // // Duplicate class androidx.lifecycle.ViewModelLazy found in modules jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) and lifecycle-viewmodel-2.5.0-runtime (androidx.lifecycle:lifecycle-viewmodel:2.5.0) // // By explicitly adding these dependencies, the jetifier // is forced to use the correct lifecycle version instead // of automatically picking 2.3.1. // // See: https://stackoverflow.com/a/69832319/560774 configurations { all { exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx' } }