plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlinx.serialization) alias(libs.plugins.compose.compiler) } android { namespace = "pw.binom.viewmate.glasses" compileSdk = 35 defaultConfig { applicationId = "pw.binom.viewmate.glasses" minSdk = 26 targetSdk = 34 versionCode = (project.findProperty("versionCode") as? String)?.toIntOrNull() ?: 1 versionName = (project.findProperty("versionName") as? String) ?: "0.1.0" } buildTypes { release { isMinifyEnabled = false } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlin { compilerOptions { jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } buildFeatures { compose = true } testOptions { // Unit-тесты строят TempleAction из aar, чьи конструкторы дёргают // SystemClock.uptimeMillis() — unmocked методы android.jar возвращают // значения по умолчанию вместо "not mocked". unitTests.isReturnDefaultValues = true } } dependencies { // RayNeo SDK (локальный aar) implementation(fileTree("libs")) implementation("androidx.appcompat:appcompat:1.3.0") implementation("androidx.core:core-ktx:1.7.0") implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.android.material3) implementation(libs.exoplayer) implementation(libs.kotlinx.coroutines.android) implementation(libs.kotlinx.serialization.json) implementation(project(":lib-core")) implementation("com.squareup.okhttp3:okhttp:4.12.0") // VAD на очках (WebRTC VAD — лёгкий, без моделей; схема pair-view автора) // VAD (WebRTC) убран из прода: резал речь на рваном микрофоне ARGT78 — // whisper распознаёт полный поток без VAD (проверено на сыром дампе). // implementation("com.github.gkonovalov.android-vad:webrtc:2.0.10") // WS-клиент очков (OkHttp — Android-движок) implementation(libs.ktor.client.okhttp) implementation(libs.ktor.client.websockets) testImplementation(kotlin("test")) }