NumberHub/app/build.gradle.kts
2024-01-27 17:45:26 +03:00

162 lines
4.8 KiB
Plaintext

/*
* Unitto is a calculator for Android
* Copyright (c) 2023-2024 Elshan Agaev
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
plugins {
// Basic stuff
id("com.android.application")
id("kotlin-android")
id("unitto.android.application.jacoco")
id("jacoco")
id("unitto.android.hilt")
alias(libs.plugins.baselineprofile)
}
android {
namespace = "com.sadellie.unitto"
compileSdk = 34
defaultConfig {
applicationId = "com.sadellie.unitto"
minSdk = 21
targetSdk = 34
versionCode = libs.versions.versionCode.get().toInt()
versionName = libs.versions.versionName.get()
resourceConfigurations += setOf(
"en",
"en-rGB",
"de",
"es",
"fr",
"hu",
"in",
"it",
"nl",
"pt-rBR",
"ru",
"tr",
"zh-rCN",
)
}
buildTypes {
debug {
isDebuggable = true
isMinifyEnabled = false
isShrinkResources = false
applicationIdSuffix = ".debug"
enableUnitTestCoverage = true
}
release {
initWith(getByName("debug"))
isDebuggable = false
isMinifyEnabled = true
isShrinkResources = true
applicationIdSuffix = ""
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
create("benchmark") {
initWith(buildTypes.getByName("release"))
matchingFallbacks.add("release")
signingConfig = signingConfigs.getByName("debug")
// Only use benchmark proguard rules
proguardFiles("benchmark-rules.pro")
isMinifyEnabled = true
}
}
flavorDimensions += "mainFlavorDimension"
productFlavors {
create("playStore") {}
create("fdroid") {}
}
buildFeatures {
compose = true
aidl = false
renderScript = false
shaders = false
buildConfig = false
resValues = false
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
isCoreLibraryDesugaringEnabled = true
}
packaging {
resources {
excludes.add("/META-INF/{AL2.0,LGPL2.1}")
}
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.androidxComposeCompiler.get()
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
}
dependencies {
implementation(libs.androidx.core.core.ktx)
implementation(libs.androidx.profileinstaller.profileinstaller)
coreLibraryDesugaring(libs.com.android.tools.desugar.jdk.libs)
implementation(libs.androidx.activity.activity.compose)
implementation(libs.androidx.appcompat.appcompat)
implementation(libs.androidx.lifecycle.lifecycle.runtime.compose)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.material3.window.size)
implementation(libs.androidx.compose.material.icons.extended)
implementation(libs.com.github.sadellie.themmo)
implementation(libs.androidx.datastore.datastore.preferences)
implementation(project(":feature:converter"))
implementation(project(":feature:calculator"))
implementation(project(":feature:settings"))
implementation(project(":feature:datecalculator"))
implementation(project(":feature:timezone"))
implementation(project(":feature:bodymass"))
implementation(project(":feature:glance"))
implementation(project(":data:model"))
implementation(project(":data:userprefs"))
implementation(project(":core:ui"))
implementation(project(":core:base"))
baselineProfile(project(":benchmark"))
}
baselineProfile {
// Don't build on every iteration of a full assemble.
// Instead enable generation directly for the release build variant.
automaticGenerationDuringBuild = false
}