apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'jacoco' apply from: "../gradle_scripts/code_quality.gradle" android { compileSdkVersion versions.compileSdk defaultConfig { applicationId "org.moire.ultrasonic" versionCode 103 versionName "3.2.0" minSdkVersion versions.minSdk targetSdkVersion versions.targetSdk resConfigs 'cs', 'de', 'en', 'es', 'fr', 'hu', 'it', 'nl', 'pl', 'pt', 'pt-rBR', 'ru', 'zh-rCN', 'zh-rTW' } bundle.language.enableSplit = false buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'minify/proguard-main.pro', 'minify/proguard-okhttp.pro', 'minify/proguard-retrofit.pro', 'minify/proguard-jackson.pro', 'minify/proguard-kotlin-reflect.pro', 'minify/proguard-kotlin.pro' } debug { minifyEnabled false multiDexEnabled true testCoverageEnabled true applicationIdSuffix ".debug" } } sourceSets { main.java.srcDirs += "${projectDir}/src/main/kotlin" test.java.srcDirs += "${projectDir}/src/test/kotlin" } packagingOptions { resources { excludes += ['META-INF/LICENSE'] } } kotlinOptions { jvmTarget = "1.8" } buildFeatures { viewBinding true dataBinding true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kapt { arguments { arg("room.schemaLocation", "$buildDir/schemas".toString()) } } lint { baseline = file("lint-baseline.xml") abortOnError true warningsAsErrors true disable 'IconMissingDensityFolder', 'VectorPath' ignore 'MissingTranslation', 'UnusedQuantity', 'MissingQuantity' warning 'ImpliedQuantity' } } tasks.withType(Test) { useJUnitPlatform() } dependencies { implementation project(':core:domain') implementation project(':core:subsonic-api') api(libs.picasso) { exclude group: "com.android.support" } implementation libs.core implementation libs.support implementation libs.design implementation libs.multidex implementation libs.roomRuntime implementation libs.roomKtx implementation libs.viewModelKtx implementation libs.constraintLayout implementation libs.preferences implementation libs.media implementation libs.media3exoplayer implementation libs.media3session implementation libs.media3okhttp implementation libs.navigationFragment implementation libs.navigationUi implementation libs.navigationFragmentKtx implementation libs.navigationUiKtx implementation libs.navigationFeature implementation libs.kotlinStdlib implementation libs.kotlinxCoroutines implementation libs.kotlinxGuava implementation libs.koinAndroid implementation libs.okhttpLogging implementation libs.fastScroll implementation libs.colorPickerView implementation libs.rxJava implementation libs.rxAndroid implementation libs.multiType kapt libs.room testImplementation libs.kotlinReflect testImplementation libs.junit testRuntimeOnly libs.junitVintage testImplementation libs.kotlinJunit testImplementation libs.kluent testImplementation libs.mockito testImplementation libs.mockitoInline testImplementation libs.mockitoKotlin testImplementation libs.robolectric implementation libs.timber } jacoco { toolVersion(libs.versions.jacoco.get()) } // Excluding all java classes and stuff that should not be covered ext { jacocoExclude = [ '**/activity/**', '**/audiofx/**', '**/fragment/**', '**/provider/**', '**/receiver/**', '**/service/**', '**/Test/**', '**/util/**', '**/view/**', '**/R$*.class', '**/R.class', '**/BuildConfig.class', '**/di/**', 'jdk.internal.*' ] } jacoco { toolVersion(libs.versions.jacoco.get()) } tasks.withType(Test) { jacoco.includeNoLocationClasses = true jacoco.excludes += jacocoExclude }