/* * 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 * * https://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. */ import com.android.build.api.dsl.ManagedVirtualDevice import com.google.samples.apps.nowinandroid.NiaBuildType import com.google.samples.apps.nowinandroid.configureFlavors plugins { id("nowinandroid.android.test") } android { namespace = "com.google.samples.apps.nowinandroid.benchmarks" defaultConfig { minSdk = 28 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" buildConfigField("String", "APP_BUILD_TYPE_SUFFIX", "\"\"") } buildFeatures { buildConfig = true } buildTypes { // This benchmark buildType is used for benchmarking, and should function like your // release build (for example, with minification on). It's signed with a debug key // for easy local/CI testing. create("benchmark") { // Keep the build type debuggable so we can attach a debugger if needed. isDebuggable = true signingConfig = signingConfigs.getByName("debug") matchingFallbacks.add("release") buildConfigField( "String", "APP_BUILD_TYPE_SUFFIX", "\"${NiaBuildType.BENCHMARK.applicationIdSuffix ?: ""}\"" ) } } // Use the same flavor dimensions as the application to allow generating Baseline Profiles on prod, // which is more close to what will be shipped to users (no fake data), but has ability to run the // benchmarks on demo, so we benchmark on stable data. configureFlavors(this) { flavor -> buildConfigField( "String", "APP_FLAVOR_SUFFIX", "\"${flavor.applicationIdSuffix ?: ""}\"" ) } targetProjectPath = ":app" experimentalProperties["android.experimental.self-instrumenting"] = true } dependencies { implementation(libs.androidx.benchmark.macro) implementation(libs.androidx.test.core) implementation(libs.androidx.test.espresso.core) implementation(libs.androidx.test.ext) implementation(libs.androidx.test.rules) implementation(libs.androidx.test.runner) implementation(libs.androidx.test.uiautomator) } androidComponents { beforeVariants { it.enable = it.buildType == "benchmark" } }