summaryrefslogtreecommitdiffstats
path: root/mobile/android/fenix/benchmark/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/fenix/benchmark/build.gradle')
-rw-r--r--mobile/android/fenix/benchmark/build.gradle75
1 files changed, 75 insertions, 0 deletions
diff --git a/mobile/android/fenix/benchmark/build.gradle b/mobile/android/fenix/benchmark/build.gradle
new file mode 100644
index 0000000000..8f13686ff4
--- /dev/null
+++ b/mobile/android/fenix/benchmark/build.gradle
@@ -0,0 +1,75 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import com.android.build.api.dsl.ManagedVirtualDevice
+
+plugins {
+ id 'com.android.test'
+ id 'org.jetbrains.kotlin.android'
+}
+
+android {
+ namespace 'org.mozilla.fenix.benchmark'
+ compileSdk config.compileSdkVersion
+
+ defaultConfig {
+ minSdk 23
+ targetSdk config.targetSdkVersion
+ 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 testing.
+ benchmark {
+ debuggable = true
+ signingConfig signingConfigs.debug
+ matchingFallbacks = ["release"]
+ }
+ }
+
+ targetProjectPath = ":app"
+ experimentalProperties["android.experimental.self-instrumenting"] = true
+
+ testOptions {
+ managedDevices {
+ devices {
+ pixel6Api34(ManagedVirtualDevice) {
+ device = "Pixel 6"
+ apiLevel = 34
+ systemImageSource = "google"
+ }
+ }
+ }
+ }
+}
+
+/**
+ * This fixes the dependency resolution issue with Glean Native. The glean gradle plugin does this
+ * and that's applied to the app module. Since there are no other uses of the glean plugin in the
+ * benchmark module, we do this manually here.
+ */
+configurations.configureEach {
+ resolutionStrategy.capabilitiesResolution.withCapability("org.mozilla.telemetry:glean-native") {
+ def toBeSelected = candidates.find { it.id instanceof ModuleComponentIdentifier && it.id.module.contains('geckoview') }
+ if (toBeSelected != null) {
+ select(toBeSelected)
+ }
+ because 'use GeckoView Glean instead of standalone Glean'
+ }
+}
+
+dependencies {
+ implementation ComponentsDependencies.androidx_test_junit
+ implementation ComponentsDependencies.androidx_espresso_core
+ implementation ComponentsDependencies.androidx_test_uiautomator
+ implementation FenixDependencies.androidx_benchmark_macro_junit4
+}
+
+androidComponents {
+ beforeVariants(selector().all()) {
+ enabled = buildType == "benchmark"
+ }
+}