plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.hilt) alias(libs.plugins.kapt) id("com.google.gms.google-services") id("kotlin-parcelize") alias(libs.plugins.kotlin.compose) } android { namespace = "com.example.myserver" compileSdk = 35 defaultConfig { applicationId = "com.example.myserver" minSdk = 29 targetSdk = 35 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { debug { //applicationIdSuffix = ".debug" versionNameSuffix = "-debug" isMinifyEnabled = false isShrinkResources = false proguardFiles( getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } register("staging") { initWith(buildTypes["release"]) isMinifyEnabled = true isShrinkResources = true applicationIdSuffix = ".staging" versionNameSuffix = "-staging" } } androidComponents { onVariants { variant -> if (variant.buildType == "release") { variant.packaging.resources.excludes.add("META-INF/*.version") variant.packaging.resources.excludes.add("META-INF/*.kotlin_module") variant.packaging.resources.excludes.add("kotlin/**") variant.packaging.resources.excludes.add("DebugProbesKt.bin") } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true } composeOptions { //kotlinCompilerExtensionVersion = "1.5.1" kotlinCompilerExtensionVersion = "1.5.15" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1,androidx.compose.material3_material3.version}" } } } kapt { correctErrorTypes = true useBuildCache = false } dependencies { implementation(libs.play.services.cast.framework) // 1. BOM val composeBom = platform("androidx.compose:compose-bom:2024.02.01") implementation(composeBom) androidTestImplementation(composeBom) // 2. Compose implementation(libs.compose.ui) implementation(libs.compose.ui.graphics) implementation(libs.compose.ui.tooling.preview) implementation(libs.activity.compose) implementation(libs.lifecycle.viewmodel.compose) implementation(libs.foundation) // 3. Material 3 implementation("androidx.compose.material3:material3") implementation("androidx.compose.material3:material3-window-size-class") implementation("androidx.compose.material:material-icons-extended") // 4. Network implementation(libs.retrofit) implementation(libs.retrofit.gson) implementation(libs.okhttp.logging) // 5. Hilt implementation(libs.hilt.android) kapt(libs.hilt.compiler) implementation("androidx.hilt:hilt-navigation-compose:1.1.0") // 6. AndroidX implementation(libs.appcompat) implementation(libs.material) implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1") // 7. Tests testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) debugImplementation(libs.compose.ui.tooling) // 8. Lifecycle & Security implementation("androidx.lifecycle:lifecycle-process:2.8.7") implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.7") implementation("androidx.security:security-crypto:1.1.0-alpha06") implementation("com.squareup.okhttp3:okhttp:4.12.0") implementation("com.google.code.gson:gson:2.10.1") // 9. Firebase implementation(platform("com.google.firebase:firebase-bom:34.12.0")) implementation("com.google.firebase:firebase-messaging") implementation("com.google.firebase:firebase-analytics") // 10. Room implementation("androidx.room:room-runtime:2.7.1") implementation("androidx.room:room-ktx:2.7.1") kapt("androidx.room:room-compiler:2.7.1") // 11. Media implementation("com.github.bumptech.glide:glide:4.16.0") kapt("com.github.bumptech.glide:compiler:4.16.0") implementation("id.zelory:compressor:3.0.1") implementation("com.otaliastudios:transcoder:0.10.3") implementation("com.github.yalantis:ucrop:2.2.6") implementation("androidx.work:work-runtime-ktx:2.9.0") // Криптография для секретных чатов implementation("org.bouncycastle:bcprov-jdk15on:1.70") implementation("org.bouncycastle:bcpkix-jdk15on:1.70") // Для работы с большими числами (DH) implementation("org.apache.commons:commons-math3:3.6.1") // Для выбора изображений implementation("com.github.dhaval2404:imagepicker:2.1") // Для сжатия изображений implementation("id.zelory:compressor:3.0.1") // Для работы с видео implementation("com.otaliastudios:transcoder:0.10.3") // Glide для загрузки изображений implementation("com.github.bumptech.glide:glide:4.16.0") // Для работы с файлами implementation("androidx.documentfile:documentfile:1.0.1") } tasks.register("checkApkSize") { doLast { val releaseDir = layout.buildDirectory.dir("outputs/apk/release").get().asFile val apkFile = releaseDir.listFiles()?.find { it.name.endsWith(".apk") } if (apkFile != null) { val sizeMB = apkFile.length() / (1024.0 * 1024.0) println("✅ APK size: ${String.format("%.2f", sizeMB)} MB") if (sizeMB > 100) { println("⚠️ WARNING: APK size > 100MB! Consider further optimization.") } } else { println("⚠️ No APK file found in $releaseDir") } } } //configurations.all { // resolutionStrategy { // force("org.jetbrains.kotlin:kotlin-stdlib:1.9.0") // force("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0") // force("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.0") // force("org.jetbrains.kotlin:kotlin-reflect:1.9.0") // } //} apply(plugin = "com.google.gms.google-services")