Source code
Revision control
Copy as Markdown
Other Tools
/* 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
plugins {
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
apply plugin: 'com.android.application'
android {
defaultConfig {
applicationId "org.mozilla.samples.browser"
minSdkVersion = config.minSdkVersion
compileSdk = config.compileSdkVersion
targetSdkVersion = config.targetSdkVersion
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArgument "clearPackageData", "true"
testInstrumentationRunnerArgument "listener", "leakcanary.FailTestOnLeakRunListener"
}
buildTypes {
release {
minifyEnabled = false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions += "engine"
productFlavors {
gecko {
dimension "engine"
}
// WebView
system {
dimension "engine"
}
}
variantFilter { variant ->
if (variant.buildType.name == "release") {
// This is a sample app that we are not releasing. Save some time and do not build
// release versions.
setIgnore(true)
}
}
buildFeatures {
viewBinding = true
compose = true
}
namespace = 'org.mozilla.samples.browser'
}
tasks.register("updateBorderifyExtensionVersion", Copy) { task ->
updateExtensionVersion(task, 'src/main/assets/extensions/borderify')
}
tasks.register("updateTestExtensionVersion", Copy) { task ->
updateExtensionVersion(task, 'src/main/assets/extensions/test')
}
dependencies {
geckoImplementation project(':components:browser-engine-gecko')
implementation project(':components:browser-domains')
implementation project(':components:browser-engine-system')
implementation project(':components:browser-icons')
implementation project(':components:browser-menu')
implementation project(':components:browser-session-storage')
implementation project(':components:browser-state')
implementation project(':components:browser-storage-sync')
implementation project(':components:browser-tabstray')
implementation project(':components:browser-thumbnails')
implementation project(':components:browser-toolbar')
implementation project(':components:compose-awesomebar')
implementation project(':components:concept-awesomebar')
implementation project(':components:concept-base')
implementation project(':components:concept-engine')
implementation project(':components:concept-fetch')
implementation project(':components:concept-storage')
implementation project(':components:concept-tabstray')
implementation project(':components:concept-toolbar')
implementation project(':components:feature-addons')
implementation project(':components:feature-app-links')
implementation project(":components:feature-autofill")
implementation project(':components:feature-awesomebar')
implementation project(':components:feature-contextmenu')
implementation project(':components:feature-customtabs')
implementation project(':components:feature-downloads')
implementation project(':components:feature-findinpage')
implementation project(':components:feature-intent')
implementation project(':components:feature-media')
implementation project(':components:feature-privatemode')
implementation project(':components:feature-prompts')
implementation project(':components:feature-pwa')
implementation project(':components:feature-readerview')
implementation project(':components:feature-screendetection')
implementation project(':components:feature-search')
implementation project(':components:feature-session')
implementation project(':components:feature-sitepermissions')
implementation project(':components:feature-tabs')
implementation project(':components:feature-toolbar')
implementation project(':components:feature-webcompat')
implementation project(':components:feature-webcompat-reporter')
implementation project(':components:feature-webnotifications')
implementation project(":components:lib-crash")
implementation project(':components:lib-dataprotect')
implementation project(':components:lib-fetch-httpurlconnection')
implementation project(":components:lib-publicsuffixlist")
implementation project(':components:service-digitalassetlinks')
// Add a dependency on glean to simplify the testing workflow
// for engineers that want to test Gecko metrics exfiltrated via the Glean
implementation project(":components:service-glean")
implementation project(':components:service-location')
implementation project(':components:service-sync-logins')
implementation project(':components:support-appservices')
implementation project(':components:support-base')
implementation project(':components:support-ktx')
implementation project(':components:support-locale')
implementation project(':components:support-utils')
implementation project(':components:support-webextensions')
implementation project(':components:ui-autocomplete')
implementation project(':components:ui-tabcounter')
implementation project(':components:ui-widgets')
implementation libs.androidx.appcompat
implementation platform(libs.androidx.compose.bom)
implementation libs.androidx.compose.foundation
implementation libs.androidx.compose.material3
implementation libs.androidx.compose.ui.tooling
implementation libs.androidx.constraintlayout
implementation libs.androidx.core.ktx
implementation libs.androidx.localbroadcastmanager
implementation libs.androidx.swiperefreshlayout
implementation libs.google.material
implementation libs.mozilla.glean
debugImplementation libs.leakcanary
testImplementation libs.androidx.test.core
testImplementation libs.androidx.test.junit
testImplementation libs.kotlinx.coroutines.test
testImplementation libs.mockito
testImplementation libs.robolectric
androidTestImplementation project(':components:support-android-test')
androidTestImplementation libs.androidx.test.core
androidTestImplementation libs.androidx.test.espresso.core
androidTestImplementation libs.androidx.test.junit
androidTestImplementation libs.androidx.test.monitor
androidTestImplementation libs.androidx.test.rules
androidTestImplementation libs.androidx.test.runner
androidTestImplementation libs.androidx.test.uiautomator
androidTestImplementation libs.leakcanary.instrumentation
androidTestImplementation libs.mockwebserver
}
preBuild.dependsOn updateBorderifyExtensionVersion
preBuild.dependsOn updateTestExtensionVersion