187 lines
5.5 KiB
Kotlin
187 lines
5.5 KiB
Kotlin
import java.util.Properties
|
|
|
|
plugins {
|
|
alias(libs.plugins.com.android.application)
|
|
alias(libs.plugins.org.jetbrains.kotlin.android)
|
|
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
alias(libs.plugins.com.google.devtools.ksp)
|
|
alias(libs.plugins.kotlin.compose.compiler)
|
|
alias(libs.plugins.kotlin.serialization)
|
|
}
|
|
|
|
android {
|
|
namespace = "dev.meloda.fast"
|
|
compileSdk = Configs.compileSdk
|
|
|
|
defaultConfig {
|
|
applicationId = "dev.meloda.fast"
|
|
minSdk = Configs.minSdk
|
|
targetSdk = Configs.targetSdk
|
|
versionCode = Configs.appCode
|
|
versionName = Configs.appName
|
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
}
|
|
|
|
// TODO: 06/05/2024, Danil Nikolaev: придумать, как совместить с github actions
|
|
// applicationVariants.all {
|
|
// val variant = this
|
|
// variant.outputs
|
|
// .map { it as com.android.build.gradle.internal.api.BaseVariantOutputImpl }
|
|
// .forEach { output ->
|
|
// if (variant.buildType.name == "release") {
|
|
// val outputFileName = "fastvk-v${variant.versionName}-${variant.flavorName}.apk"
|
|
// output.outputFileName = outputFileName
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
signingConfigs {
|
|
create("release") {
|
|
val keystoreProperties = Properties()
|
|
val keystorePropertiesFile = file("keystore/keystore.properties")
|
|
|
|
storeFile = file("keystore/keystore.jks")
|
|
|
|
if (keystorePropertiesFile.exists()) {
|
|
keystorePropertiesFile.inputStream().let(keystoreProperties::load)
|
|
storePassword = keystoreProperties.getProperty("storePassword")
|
|
keyAlias = keystoreProperties.getProperty("keyAlias")
|
|
keyPassword = keystoreProperties.getProperty("keyPassword")
|
|
} else {
|
|
storePassword = System.getenv("KEYSTORE_PASSWORD")
|
|
keyAlias = System.getenv("RELEASE_SIGN_KEY_ALIAS")
|
|
keyPassword = System.getenv("RELEASE_SIGN_KEY_PASSWORD")
|
|
}
|
|
}
|
|
|
|
create("debugSigning") {
|
|
initWith(getByName("release"))
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
named("debug") {
|
|
signingConfig = signingConfigs.getByName("debugSigning")
|
|
applicationIdSuffix = ".debug"
|
|
}
|
|
named("release") {
|
|
signingConfig = signingConfigs.getByName("release")
|
|
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
|
"proguard-rules.pro"
|
|
)
|
|
}
|
|
|
|
// TODO: 15/05/2024, Danil Nikolaev: add to other modules with build convention
|
|
register("staging") {
|
|
initWith(getByName("release"))
|
|
applicationIdSuffix = ".staging"
|
|
}
|
|
}
|
|
|
|
val flavorDimension = "variant"
|
|
flavorDimensions += flavorDimension
|
|
|
|
productFlavors {
|
|
register("amethyst") {
|
|
dimension = flavorDimension
|
|
isDefault = true
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = Configs.java
|
|
targetCompatibility = Configs.java
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = Configs.java.toString()
|
|
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
}
|
|
|
|
buildFeatures {
|
|
compose = true
|
|
}
|
|
|
|
composeOptions {
|
|
useLiveLiterals = true
|
|
}
|
|
|
|
packaging {
|
|
resources {
|
|
excludes += "/META-INF/{AL2.0,LGPL2.1}"
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation(projects.feature.auth)
|
|
implementation(projects.feature.chatmaterials)
|
|
implementation(projects.feature.conversations)
|
|
implementation(projects.feature.languagepicker)
|
|
implementation(projects.feature.messageshistory)
|
|
implementation(projects.feature.photoviewer)
|
|
implementation(projects.feature.settings)
|
|
implementation(projects.feature.friends)
|
|
implementation(projects.feature.profile)
|
|
implementation(projects.feature.photoviewer)
|
|
|
|
implementation(projects.core.common)
|
|
implementation(projects.core.ui)
|
|
implementation(projects.core.designsystem)
|
|
implementation(projects.core.data)
|
|
implementation(projects.core.model)
|
|
implementation(projects.core.datastore)
|
|
|
|
// Tests zone
|
|
testImplementation(libs.junit)
|
|
// end of Tests zone
|
|
|
|
// Compose-Bom zone
|
|
implementation(platform(libs.compose.bom))
|
|
implementation(libs.bundles.compose)
|
|
// end of Compose-Bom zone
|
|
|
|
implementation(libs.accompanist.permissions)
|
|
|
|
// Coil for Compose
|
|
implementation(libs.coil.compose)
|
|
|
|
// androidTestImplementation(libs.compose.ui.test.junit4)
|
|
debugImplementation(libs.compose.ui.test.manifest)
|
|
debugImplementation(libs.compose.ui.tooling)
|
|
|
|
implementation(libs.koin.android)
|
|
implementation(libs.koin.androidx.compose)
|
|
implementation(libs.koin.androidx.compose.navigation)
|
|
|
|
implementation(libs.coil)
|
|
|
|
implementation(libs.core.ktx)
|
|
|
|
implementation(libs.lifecycle.viewmodel.ktx)
|
|
implementation(libs.lifecycle.runtime.ktx)
|
|
|
|
implementation(libs.preference.ktx)
|
|
implementation(libs.material)
|
|
|
|
implementation(libs.haze)
|
|
implementation(libs.haze.materials)
|
|
|
|
implementation(libs.kotlinx.coroutines.core)
|
|
implementation(libs.kotlinx.coroutines.android)
|
|
|
|
implementation(libs.nanokt)
|
|
implementation(libs.nanokt.android)
|
|
implementation(libs.nanokt.jvm)
|
|
|
|
implementation(libs.androidx.navigation.compose)
|
|
implementation(libs.kotlin.serialization)
|
|
|
|
}
|