| /* |
| * 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 { |
| alias(libs.plugins.android.test) |
| alias(libs.plugins.kotlin.android) |
| } |
| |
| android { |
| namespace = "com.google.jetpackcamera.benchmark" |
| compileSdk = libs.versions.compileSdk.get().toInt() |
| compileSdkPreview = libs.versions.compileSdkPreview.get() |
| |
| compileOptions { |
| sourceCompatibility = JavaVersion.VERSION_1_8 |
| targetCompatibility = JavaVersion.VERSION_1_8 |
| } |
| |
| kotlinOptions { |
| jvmTarget = "1.8" |
| } |
| |
| defaultConfig { |
| //Our app has a minSDK of 21, but in order for the benchmark tool to function, it must be 23 |
| minSdk = 23 |
| targetSdk = libs.versions.targetSdk.get().toInt() |
| |
| // allows the benchmark to be run on an emulator |
| testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = |
| "EMULATOR,LOW-BATTERY,NOT-PROFILEABLE" |
| |
| testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" |
| } |
| |
| 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") { |
| isDebuggable = true |
| signingConfig = getByName("debug").signingConfig |
| matchingFallbacks += listOf("release") |
| } |
| } |
| |
| flavorDimensions += "flavor" |
| productFlavors { |
| create("stable") { |
| dimension = "flavor" |
| } |
| |
| create("preview") { |
| dimension = "flavor" |
| targetSdkPreview = libs.versions.targetSdkPreview.get() |
| } |
| } |
| |
| targetProjectPath = ":app" |
| // required for benchmark: |
| // self instrumentation required for the tests to be able to compile, start, or kill the app |
| // ensures test and app processes are separate |
| // see https://source.android.com/docs/core/tests/development/instr-self-e2e |
| experimentalProperties["android.experimental.self-instrumenting"] = true |
| } |
| |
| dependencies { |
| implementation(libs.androidx.junit) |
| implementation(libs.androidx.benchmark.macro.junit4) |
| } |
| |
| androidComponents { |
| beforeVariants(selector().all()) { |
| it.enable = it.buildType == "benchmark" |
| } |
| } |