208 lines
6.6 KiB
Kotlin
208 lines
6.6 KiB
Kotlin
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") |