Files
DurakScore/app/build.gradle.kts

177 lines
4.4 KiB
Kotlin

import java.util.Properties
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.compose)
}
val releaseSigningPropertiesFile =
rootProject.file("release-signing.properties")
val releaseSigningProperties =
Properties().apply {
if (releaseSigningPropertiesFile.exists()) {
releaseSigningPropertiesFile
.reader(Charsets.UTF_8)
.use { load(it) }
}
}
android {
namespace = "ru.durakscore.app"
compileSdk {
version = release(37)
}
defaultConfig {
applicationId = "ru.durakscore.app"
minSdk = 26
targetSdk = 37
versionCode = 30
versionName = "0.9.20"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
create("release") {
if (releaseSigningPropertiesFile.exists()) {
storeFile =
file(
releaseSigningProperties.getProperty(
"storeFile"
)
)
storePassword =
releaseSigningProperties.getProperty(
"storePassword"
)
keyAlias =
releaseSigningProperties.getProperty(
"keyAlias"
)
keyPassword =
releaseSigningProperties.getProperty(
"keyPassword"
)
}
}
}
buildTypes {
release {
if (releaseSigningPropertiesFile.exists()) {
signingConfig =
signingConfigs.getByName(
"release"
)
}
optimization {
enable = false
}
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
buildFeatures {
compose = true
}
}
val releaseVersionName =
android.defaultConfig.versionName
?: error("versionName is not set")
val releaseVersionCode =
android.defaultConfig.versionCode
tasks.register<Exec>("publishRelease") {
notCompatibleWithConfigurationCache("External PowerShell SSH release task")
group = "release"
description =
"Build signed APK and publish Durakometr update to VPS"
dependsOn("assembleRelease")
doFirst {
check(
releaseSigningPropertiesFile.exists()
) {
"Missing release-signing.properties in project root"
}
val requiredKeys =
listOf(
"storeFile",
"storePassword",
"keyAlias",
"keyPassword"
)
requiredKeys.forEach { key ->
check(
!releaseSigningProperties
.getProperty(key)
.isNullOrBlank()
) {
"Missing '$key' in release-signing.properties"
}
}
}
workingDir =
rootProject.projectDir
commandLine(
"powershell.exe",
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
rootProject
.file("publish-release.ps1")
.absolutePath,
"-VersionName",
releaseVersionName,
"-VersionCode",
releaseVersionCode.toString()
)
}
dependencies {
implementation(platform(libs.androidx.compose.bom))
implementation("androidx.appcompat:appcompat:1.7.1")
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
testImplementation(libs.junit)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(libs.androidx.junit)
debugImplementation(libs.androidx.compose.ui.test.manifest)
debugImplementation(libs.androidx.compose.ui.tooling)
}