import java.util.Properties import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("com.android.application") id("org.jetbrains.kotlin.plugin.compose") } val localProperties = Properties().apply { val file = rootProject.file("local.properties") if (file.exists()) { file.inputStream().use(::load) } } val keyProperties = Properties().apply { val file = rootProject.file("key.properties") if (file.exists()) { file.inputStream().use(::load) } } val releaseStoreFile = keyProperties.getProperty("storeFile")?.let { rootProject.file(it) } val defaultBaseUrl = "https://www.ypchat.net" val appBaseUrl = localProperties.getProperty("ypchat.baseUrl", defaultBaseUrl) val hasReleaseSigning = releaseStoreFile?.exists() == true android { namespace = "net.ypchat.app" compileSdk = 36 defaultConfig { applicationId = "net.ypchat.app" minSdk = 26 targetSdk = 36 versionCode = 1 versionName = "1.0.0" } lint { checkReleaseBuilds = false abortOnError = false } signingConfigs { if (hasReleaseSigning) { create("release") { storeFile = releaseStoreFile storePassword = keyProperties.getProperty("storePassword") keyAlias = keyProperties.getProperty("keyAlias") keyPassword = keyProperties.getProperty("keyPassword") } } } buildTypes { debug { buildConfigField("String", "BASE_URL", "\"$appBaseUrl\"") manifestPlaceholders["usesCleartextTraffic"] = true } release { buildConfigField("String", "BASE_URL", "\"$appBaseUrl\"") isMinifyEnabled = true isShrinkResources = true manifestPlaceholders["usesCleartextTraffic"] = false if (hasReleaseSigning) { signingConfig = signingConfigs.getByName("release") } proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } buildFeatures { compose = true buildConfig = true } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } } kotlin { compilerOptions { jvmTarget.set(JvmTarget.JVM_17) } } dependencies { val composeBom = platform("androidx.compose:compose-bom:2026.03.01") implementation(composeBom) androidTestImplementation(composeBom) implementation("androidx.activity:activity-compose:1.13.0") implementation("androidx.compose.foundation:foundation") implementation("androidx.compose.material3:material3") implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.lifecycle:lifecycle-runtime-compose:2.10.0") implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0") implementation("com.squareup.okhttp3:okhttp:5.3.2") implementation("com.squareup.retrofit2:retrofit:3.0.0") implementation("com.squareup.retrofit2:converter-gson:3.0.0") implementation("io.socket:socket.io-client:2.1.2") { exclude(group = "org.json", module = "json") } implementation("io.coil-kt.coil3:coil-compose:3.4.0") implementation("io.coil-kt.coil3:coil-network-okhttp:3.4.0") debugImplementation("androidx.compose.ui:ui-tooling") }