plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.devtools.ksp") id("com.google.dagger.hilt.android") } android { namespace = "ru.lastochka.messenger" compileSdk = 35 defaultConfig { applicationId = "ru.lastochka.messenger" minSdk = 26 targetSdk = 35 versionCode = 1 versionName = "1.0.0" vectorDrawables { useSupportLibrary = true } } buildTypes { debug { resValue("string", "default_host_name", "app.lastochka-m.ru") resValue("string", "default_api_key", "AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K") } release { resValue("string", "default_host_name", "app.lastochka-m.ru") resValue("string", "default_api_key", "AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K") isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true buildConfig = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { // Compose BOM implementation(platform("androidx.compose:compose-bom:2024.06.00")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") implementation("androidx.compose.material:material-icons-extended") implementation("androidx.compose.animation:animation") // Activity Compose implementation("androidx.activity:activity-compose:1.9.3") // Navigation Compose implementation("androidx.navigation:navigation-compose:2.8.3") // ViewModel + Lifecycle implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7") implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.7") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7") // Room implementation("androidx.room:room-runtime:2.6.1") implementation("androidx.room:room-ktx:2.6.1") ksp("androidx.room:room-compiler:2.6.1") // Coroutines implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1") // Hilt DI implementation("com.google.dagger:hilt-android:2.52") ksp("com.google.dagger:hilt-compiler:2.52") implementation("androidx.hilt:hilt-navigation-compose:1.2.0") // Material Components (for themes/splash) implementation("com.google.android.material:material:1.12.0") // Coil (image loading) implementation("io.coil-kt:coil-compose:2.7.0") // ExifInterface (image orientation) implementation("androidx.exifinterface:exifinterface:1.3.7") // DataStore (preferences) implementation("androidx.datastore:datastore-preferences:1.1.1") // Core Splash Screen implementation("androidx.core:core-splashscreen:1.0.1") // Timber (logging) implementation("com.jakewharton.timber:timber:5.0.1") // Firebase (Push Notifications) implementation(platform("com.google.firebase:firebase-bom:33.1.0")) implementation("com.google.firebase:firebase-messaging-ktx") implementation("com.google.firebase:firebase-analytics-ktx") // Gson (JSON parsing) implementation("com.google.code.gson:gson:2.11.0") // OkHttp (WebSocket + HTTP) implementation("com.squareup.okhttp3:okhttp:4.12.0") // Debug debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") // Testing testImplementation("junit:junit:4.13.2") testImplementation("io.mockk:mockk:1.13.10") testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1") testImplementation("app.cash.turbine:turbine:1.1.0") testImplementation("org.robolectric:robolectric:4.12.1") testImplementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7") testImplementation("androidx.savedstate:savedstate:1.2.1") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") androidTestImplementation("androidx.room:room-testing:2.6.1") }