/* * Copyright 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ plugins { id 'com.android.library' id 'kotlin-android' } android { namespace 'com.android.settingslib.spa' compileSdk TARGET_SDK buildToolsVersion = BUILD_TOOLS_VERSION defaultConfig { minSdk MIN_SDK targetSdk TARGET_SDK testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } sourceSets { main { kotlin { srcDir "src" } res.srcDirs = ["res"] manifest.srcFile "AndroidManifest.xml" } androidTest { kotlin { srcDir "../tests/src" } res.srcDirs = ["../tests/res"] manifest.srcFile "../tests/AndroidManifest.xml" } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion jetpack_compose_compiler_version } buildTypes { debug { testCoverageEnabled = true } } } dependencies { api "androidx.appcompat:appcompat:1.7.0-alpha02" api "androidx.slice:slice-builders:1.1.0-alpha02" api "androidx.slice:slice-core:1.1.0-alpha02" api "androidx.slice:slice-view:1.1.0-alpha02" api "androidx.compose.material3:material3:1.1.0-alpha06" api "androidx.compose.material:material-icons-extended:$jetpack_compose_version" api "androidx.compose.runtime:runtime-livedata:$jetpack_compose_version" api "androidx.compose.ui:ui-tooling-preview:$jetpack_compose_version" api "androidx.lifecycle:lifecycle-livedata-ktx" api "androidx.lifecycle:lifecycle-runtime-compose" api "androidx.navigation:navigation-compose:2.6.0-alpha08" api "com.github.PhilJay:MPAndroidChart:v3.1.0-alpha" api "com.google.android.material:material:1.7.0-alpha03" debugApi "androidx.compose.ui:ui-tooling:$jetpack_compose_version" implementation "com.airbnb.android:lottie-compose:5.2.0" androidTestImplementation project(":testutils") androidTestImplementation 'androidx.lifecycle:lifecycle-runtime-testing' androidTestImplementation "com.linkedin.dexmaker:dexmaker-mockito:2.28.3" } task coverageReport(type: JacocoReport, dependsOn: "connectedDebugAndroidTest") { group = "Reporting" description = "Generate Jacoco coverage reports after running tests." sourceDirectories.from = files("src") classDirectories.from = fileTree( dir: "$buildDir/tmp/kotlin-classes/debug", excludes: [ "com/android/settingslib/spa/debug/**", // Excludes files forked from AndroidX. "com/android/settingslib/spa/widget/scaffold/CustomizedAppBar*", "com/android/settingslib/spa/widget/scaffold/TopAppBarColors*", // Excludes files forked from Accompanist. "com/android/settingslib/spa/framework/compose/DrawablePainter*", // Excludes inline functions, which is not covered in Jacoco reports. "com/android/settingslib/spa/framework/util/Collections*", "com/android/settingslib/spa/framework/util/Flows*", // Excludes debug functions "com/android/settingslib/spa/framework/compose/TimeMeasurer*", // Excludes slice demo presenter & provider "com/android/settingslib/spa/slice/presenter/Demo*", "com/android/settingslib/spa/slice/provider/Demo*", ], ) executionData.from = fileTree(dir: "$buildDir/outputs/code_coverage/debugAndroidTest/connected") }