keyguard-app-Bitwarden-Vaul.../androidApp/build.gradle.kts

162 lines
5.3 KiB
Plaintext

import java.io.FileInputStream
import java.util.*
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.compose)
alias(libs.plugins.kotlin.plugin.compose)
alias(libs.plugins.kotlin.plugin.parcelize)
alias(libs.plugins.kotlin.plugin.serialization)
alias(libs.plugins.ksp)
alias(libs.plugins.ktlint)
alias(libs.plugins.google.services)
alias(libs.plugins.crashlytics)
alias(libs.plugins.baseline.profile)
}
fun loadProps(fileName: String): Properties {
val props = Properties()
val file = file(fileName)
if (file.exists()) {
var stream: FileInputStream? = null
try {
stream = file.inputStream()
props.load(stream)
} finally {
stream?.close()
}
}
return props
}
val versionInfo = createVersionInfo(
marketingVersion = libs.versions.appVersionName.get(),
logicalVersion = libs.versions.appVersionCode.get().toInt(),
)
val qaSigningProps = loadProps("keyguard-qa.properties")
val releaseSigningProps = loadProps("keyguard-release.properties")
android {
compileSdk = libs.versions.androidCompileSdk.get().toInt()
namespace = "com.artemchep.keyguard"
defaultConfig {
applicationId = "com.artemchep.keyguard"
minSdk = libs.versions.androidMinSdk.get().toInt()
targetSdk = libs.versions.androidTargetSdk.get().toInt()
versionCode = versionInfo.logicalVersion
versionName = versionInfo.marketingVersion
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
kotlinOptions {
freeCompilerArgs += listOf(
"-opt-in=androidx.compose.material.ExperimentalMaterialApi",
)
}
}
compileOptions {
isCoreLibraryDesugaringEnabled = true
}
androidResources {
@Suppress("UnstableApiUsage")
generateLocaleConfig = true
}
bundle {
language {
enableSplit = false
}
}
// previous-compilation-data.bin is Gradle's internal machinery for the incremental compilation
// that seemed to be packed into the resulting artifact because the lib is depending directly
// on the compilation task's output for JPMS/Multi-Release JAR support.
//
// > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
// > 2 files found with path 'META-INF/versions/9/previous-compilation-data.bin' from inputs:
// - /home/runner/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-datetime-jvm/0.4.1/684eec210b21e2da7382a4aa85e56fb7b71f39b3/kotlinx-datetime-jvm-0.4.1.jar
// - /home/runner/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/atomicfu-jvm/0.22.0/c6a128a44ba52a18265e5ec816130cd341d80792/atomicfu-jvm-0.22.0.jar
packagingOptions {
resources.excludes.add("META-INF/versions/9/previous-compilation-data.bin")
resources.excludes.add("META-INF/versions/9/OSGI-INF/MANIFEST.MF")
}
buildFeatures {
buildConfig = true
}
signingConfigs {
maybeCreate("debug").apply {
keyAlias = qaSigningProps.getProperty("key_alias")
keyPassword = qaSigningProps.getProperty("password_store")
storeFile = file("keyguard-qa.keystore")
storePassword = qaSigningProps.getProperty("password_key")
}
maybeCreate("release").apply {
keyAlias = releaseSigningProps.getProperty("key_alias")
keyPassword = releaseSigningProps.getProperty("password_store")
storeFile = file("keyguard-release.keystore")
storePassword = releaseSigningProps.getProperty("password_key")
}
}
buildTypes {
debug {
applicationIdSuffix = ".debug"
}
release {
isMinifyEnabled = true
isShrinkResources = true
signingConfig = signingConfigs.getByName("release")
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
)
}
maybeCreate("benchmark").apply {
initWith(getByName("release"))
signingConfig = signingConfigs.getByName("debug")
// Selects release buildType if the 'benchmark'
// buildType not available in other modules.
matchingFallbacks += "release"
// Do not obfuscate
proguardFiles(
"benchmark-rules.pro",
)
}
}
val accountManagementDimension = "accountManagement"
flavorDimensions += accountManagementDimension
productFlavors {
maybeCreate("playStore").apply {
dimension = accountManagementDimension
buildConfigField("boolean", "ANALYTICS", "true")
}
maybeCreate("none").apply {
dimension = accountManagementDimension
buildConfigField("boolean", "ANALYTICS", "false")
}
}
}
dependencies {
implementation(project(":common"))
baselineProfile(project(":androidBenchmark"))
coreLibraryDesugaring(libs.android.desugarjdklibs)
}
kotlin {
jvmToolchain(libs.versions.jdk.get().toInt())
}