/* * Copyright (C) 2023 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 'org.jetbrains.kotlin.android' id 'jacoco' } ext.jetpackComposeVersion = '1.3.0-alpha01' // 请根据实际版本号进行调整 android { namespace = "com.android.settingslib.spa" compileSdkVersion = 34 defaultConfig { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } sourceSets { main { kotlin.srcDirs = ['src'] res.srcDirs = ['res'] manifest.srcFile 'AndroidManifest.xml' } androidTest { kotlin.srcDirs = ['../tests/src'] res.srcDirs = ['../tests/res'] manifest.srcFile '../tests/AndroidManifest.xml' } } buildFeatures { compose = true } buildTypes { debug { enableAndroidTestCoverage = true } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } composeOptions { kotlinCompilerExtensionVersion = '1.5.0' // 假设1.4.0支持Kotlin 1.9.0 } } dependencies { api project(':SettingsLib:Color') api 'androidx.appcompat:appcompat:1.7.0-alpha03' 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.3.0" api "androidx.compose.material:material-icons-extended:1.5.0" api "androidx.compose.runtime:runtime-livedata:1.5.0" api "androidx.compose.ui:ui-tooling-preview:1.5.0" api 'androidx.lifecycle:lifecycle-livedata-ktx' api 'androidx.lifecycle:lifecycle-runtime-compose' api 'androidx.navigation:navigation-compose:2.8.0-alpha02' api 'com.github.PhilJay:MPAndroidChart:v3.1.0' api 'com.google.android.material:material:1.7.0-alpha03' debugApi "androidx.compose.ui:ui-tooling:1.5.0" implementation 'com.airbnb.android:lottie-compose:5.2.0' // androidTestImplementation project(':testutils') // androidTestImplementation libs.dexmaker.mockito } tasks.register('coverageReport', JacocoReport) { group = 'Reporting' description = 'Generate Jacoco coverage reports after running tests.' dependsOn 'connectedDebugAndroidTest' sourceDirectories.setFrom files('src') classDirectories.setFrom fileTree(dir: "${layout.buildDirectory.dir('tmp/kotlin-classes/debug')}", excludes: [ 'com/android/settingslib/spa/debug/**', 'com/android/settingslib/spa/widget/scaffold/CustomizedAppBar*', 'com/android/settingslib/spa/widget/scaffold/TopAppBarColors*', 'com/android/settingslib/spa/framework/compose/DrawablePainter*', 'com/android/settingslib/spa/framework/util/Collections*', 'com/android/settingslib/spa/framework/util/Flows*', 'com/android/settingslib/spa/framework/compose/TimeMeasurer*', 'com/android/settingslib/spa/slice/presenter/Demo*', 'com/android/settingslib/spa/slice/provider/Demo*', ]) executionData.setFrom fileTree(dir: "${layout.buildDirectory.dir('outputs/code_coverage/debugAndroidTest/connected')}") }