279 lines
7.9 KiB
Kotlin
279 lines
7.9 KiB
Kotlin
plugins {
|
|
id(ThunderbirdPlugins.App.androidCompose)
|
|
alias(libs.plugins.dependency.guard)
|
|
id("thunderbird.app.version.info")
|
|
id("thunderbird.quality.badging")
|
|
}
|
|
|
|
val testCoverageEnabled: Boolean by extra
|
|
if (testCoverageEnabled) {
|
|
apply(plugin = "jacoco")
|
|
}
|
|
|
|
android {
|
|
namespace = "net.thunderbird.android"
|
|
|
|
defaultConfig {
|
|
applicationId = "net.thunderbird.android"
|
|
testApplicationId = "net.thunderbird.android.tests"
|
|
|
|
versionCode = 16
|
|
versionName = "13.0"
|
|
|
|
buildConfigField("String", "CLIENT_INFO_APP_NAME", "\"Thunderbird for Android\"")
|
|
}
|
|
|
|
androidResources {
|
|
// Keep in sync with the resource string array "supported_languages"
|
|
localeFilters += listOf(
|
|
"ar",
|
|
"be",
|
|
"bg",
|
|
"ca",
|
|
"co",
|
|
"cs",
|
|
"cy",
|
|
"da",
|
|
"de",
|
|
"el",
|
|
"en",
|
|
"en-rGB",
|
|
"eo",
|
|
"es",
|
|
"et",
|
|
"eu",
|
|
"fa",
|
|
"fi",
|
|
"fr",
|
|
"fy",
|
|
"ga",
|
|
"gl",
|
|
"hr",
|
|
"hu",
|
|
"in",
|
|
"is",
|
|
"it",
|
|
"iw",
|
|
"ja",
|
|
"ko",
|
|
"lt",
|
|
"lv",
|
|
"nb",
|
|
"nl",
|
|
"nn",
|
|
"pl",
|
|
"pt-rBR",
|
|
"pt-rPT",
|
|
"ro",
|
|
"ru",
|
|
"sl",
|
|
"sk",
|
|
"sq",
|
|
"sr",
|
|
"sv",
|
|
"tr",
|
|
"uk",
|
|
"vi",
|
|
"zh-rCN",
|
|
"zh-rTW",
|
|
)
|
|
}
|
|
|
|
signingConfigs {
|
|
val useUploadKey = properties.getOrDefault("tb.useUploadKey", "true") == "true"
|
|
|
|
createSigningConfig(project, SigningType.TB_RELEASE, isUpload = useUploadKey)
|
|
createSigningConfig(project, SigningType.TB_BETA, isUpload = useUploadKey)
|
|
createSigningConfig(project, SigningType.TB_DAILY, isUpload = useUploadKey)
|
|
}
|
|
|
|
buildTypes {
|
|
debug {
|
|
applicationIdSuffix = ".debug"
|
|
versionNameSuffix = "-SNAPSHOT"
|
|
|
|
isMinifyEnabled = false
|
|
isShrinkResources = false
|
|
isDebuggable = true
|
|
|
|
buildConfigField("String", "GLEAN_RELEASE_CHANNEL", "null")
|
|
}
|
|
|
|
release {
|
|
signingConfig = signingConfigs.getByType(SigningType.TB_RELEASE)
|
|
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
isDebuggable = false
|
|
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android.txt"),
|
|
"proguard-rules.pro",
|
|
)
|
|
|
|
buildConfigField("String", "GLEAN_RELEASE_CHANNEL", "\"release\"")
|
|
}
|
|
|
|
create("beta") {
|
|
signingConfig = signingConfigs.getByType(SigningType.TB_BETA)
|
|
|
|
applicationIdSuffix = ".beta"
|
|
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
isDebuggable = false
|
|
|
|
matchingFallbacks += listOf("release")
|
|
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android.txt"),
|
|
"proguard-rules.pro",
|
|
)
|
|
|
|
buildConfigField("String", "GLEAN_RELEASE_CHANNEL", "\"beta\"")
|
|
}
|
|
|
|
create("daily") {
|
|
signingConfig = signingConfigs.getByType(SigningType.TB_DAILY)
|
|
|
|
applicationIdSuffix = ".daily"
|
|
versionNameSuffix = "a1"
|
|
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
isDebuggable = false
|
|
|
|
matchingFallbacks += listOf("release")
|
|
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android.txt"),
|
|
"proguard-rules.pro",
|
|
)
|
|
|
|
// See https://bugzilla.mozilla.org/show_bug.cgi?id=1918151
|
|
buildConfigField("String", "GLEAN_RELEASE_CHANNEL", "\"nightly\"")
|
|
}
|
|
}
|
|
|
|
flavorDimensions += listOf("app")
|
|
productFlavors {
|
|
create("foss") {
|
|
dimension = "app"
|
|
buildConfigField("String", "PRODUCT_FLAVOR_APP", "\"foss\"")
|
|
}
|
|
|
|
create("full") {
|
|
dimension = "app"
|
|
buildConfigField("String", "PRODUCT_FLAVOR_APP", "\"full\"")
|
|
}
|
|
}
|
|
|
|
@Suppress("UnstableApiUsage")
|
|
bundle {
|
|
language {
|
|
// Don't split by language. Otherwise our in-app language switcher won't work.
|
|
enableSplit = false
|
|
}
|
|
}
|
|
|
|
packaging {
|
|
jniLibs {
|
|
excludes += listOf("kotlin/**")
|
|
}
|
|
|
|
resources {
|
|
excludes += listOf(
|
|
"META-INF/*.kotlin_module",
|
|
"kotlin/**",
|
|
"DebugProbesKt.bin",
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
androidComponents {
|
|
onVariants(selector().withBuildType("release")) { variant ->
|
|
variant.packaging.resources.excludes.addAll(
|
|
"META-INF/*.version",
|
|
)
|
|
}
|
|
}
|
|
|
|
// Initialize placeholders for the product flavor and build type combinations needed for dependency declarations.
|
|
// They are required to avoid "Unresolved configuration" errors.
|
|
val fullDebugImplementation by configurations.creating
|
|
val fullDailyImplementation by configurations.creating
|
|
val fullBetaImplementation by configurations.creating
|
|
val fullReleaseImplementation by configurations.creating
|
|
|
|
dependencies {
|
|
implementation(projects.appCommon)
|
|
implementation(projects.core.ui.compose.theme2.thunderbird)
|
|
implementation(projects.core.ui.legacy.theme2.thunderbird)
|
|
implementation(projects.feature.launcher)
|
|
|
|
implementation(projects.legacy.core)
|
|
implementation(projects.legacy.ui.legacy)
|
|
|
|
implementation(projects.core.featureflag)
|
|
|
|
implementation(projects.feature.account.settings.impl)
|
|
implementation(projects.feature.mail.message.list)
|
|
|
|
implementation(projects.feature.widget.messageList)
|
|
implementation(projects.feature.widget.messageListGlance)
|
|
implementation(projects.feature.widget.shortcut)
|
|
implementation(projects.feature.widget.unread)
|
|
|
|
debugImplementation(projects.feature.telemetry.noop)
|
|
"dailyImplementation"(projects.feature.telemetry.noop)
|
|
"betaImplementation"(projects.feature.telemetry.noop)
|
|
releaseImplementation(projects.feature.telemetry.noop)
|
|
|
|
implementation(libs.androidx.work.runtime)
|
|
|
|
implementation(projects.feature.autodiscovery.api)
|
|
debugImplementation(projects.backend.demo)
|
|
debugImplementation(projects.feature.autodiscovery.demo)
|
|
|
|
"fossImplementation"(projects.feature.funding.link)
|
|
|
|
fullDebugImplementation(projects.feature.funding.googleplay)
|
|
fullDailyImplementation(projects.feature.funding.googleplay)
|
|
fullBetaImplementation(projects.feature.funding.googleplay)
|
|
fullReleaseImplementation(projects.feature.funding.googleplay)
|
|
|
|
implementation(projects.feature.onboarding.migration.thunderbird)
|
|
implementation(projects.feature.migration.launcher.thunderbird)
|
|
|
|
// TODO remove once OAuth ids have been moved from TBD to TBA
|
|
"betaImplementation"(libs.appauth)
|
|
releaseImplementation(libs.appauth)
|
|
|
|
// Required for DependencyInjectionTest
|
|
testImplementation(projects.feature.account.api)
|
|
testImplementation(projects.feature.account.common)
|
|
testImplementation(projects.plugins.openpgpApiLib.openpgpApi)
|
|
testImplementation(libs.appauth)
|
|
}
|
|
|
|
dependencyGuard {
|
|
configuration("fossDailyRuntimeClasspath")
|
|
configuration("fossBetaRuntimeClasspath")
|
|
configuration("fossReleaseRuntimeClasspath")
|
|
|
|
configuration("fullDailyRuntimeClasspath")
|
|
configuration("fullBetaRuntimeClasspath")
|
|
configuration("fullReleaseRuntimeClasspath")
|
|
}
|
|
|
|
tasks.register("printConfigurations") {
|
|
doLast {
|
|
configurations.forEach { configuration ->
|
|
println("Configuration: ${configuration.name}")
|
|
configuration.dependencies.forEach { dependency ->
|
|
println(" - ${dependency.group}:${dependency.name}:${dependency.version}")
|
|
}
|
|
}
|
|
}
|
|
}
|