plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.ksp) } android { namespace = "agzam.vyatsu" compileSdk { version = release(36) { minorApiLevel = 1 } } defaultConfig { applicationId = "agzam.vyatsu" minSdk = 28 targetSdk = 36 versionCode = 1 // В продакшн-сборке версию приложения подставляет CI (env APP_VERSION = дата ГГГГ.ММ.ДД). // Локально и при отсутствии переменной — fallback "1.0". versionName = System.getenv("APP_VERSION") ?: "debug" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } // Релизная подпись, ключ и пароли читаются из переменных окружения // release-сборка не подписывается signingConfigs { create("release") { val storePath = System.getenv("ANDROID_KEYSTORE_PATH") if (!storePath.isNullOrBlank()) { storeFile = file(storePath) storePassword = System.getenv("ANDROID_KEYSTORE_PASSWORD") keyAlias = System.getenv("ANDROID_KEY_ALIAS") keyPassword = System.getenv("ANDROID_KEY_PASSWORD") } } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) // Подпись (если есть) if (!System.getenv("ANDROID_KEYSTORE_PATH").isNullOrBlank()) { signingConfig = signingConfigs.getByName("release") } } } testOptions { unitTests.isReturnDefaultValues = true unitTests.all { it.maxHeapSize = "16m" } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlin { jvmToolchain(11) } buildFeatures { compose = true buildConfig = true } } ksp { arg("room.schemaLocation", "$projectDir/schemas") } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.material.icons.core) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.kotlinx.coroutines.android) // Room implementation(libs.androidx.room.runtime) implementation(libs.androidx.room.ktx) implementation(libs.androidx.monitor) ksp(libs.androidx.room.compiler) // Networking implementation(libs.okhttp) implementation(libs.okhttp.logging) // HTML implementation(libs.jsoup) // JSON implementation(libs.moshi) implementation(libs.moshi.kotlin) ksp(libs.moshi.kotlin.codegen) // PDF implementation(libs.pdfbox.android) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.test.runner) debugImplementation(libs.androidx.compose.ui.tooling) }