plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) } android { namespace = "com.jeffemmett.voicecommand" compileSdk = 35 defaultConfig { applicationId = "com.jeffemmett.voicecommand" minSdk = 29 // Android 10 targetSdk = 35 versionCode = 1 versionName = "1.0.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" // Enable native libs extraction for sherpa-onnx ndk { abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64") } } buildTypes { release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } debug { isMinifyEnabled = false } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } // Don't compress model files jniLibs { useLegacyPackaging = true } } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.activity.compose) implementation(libs.androidx.datastore.preferences) implementation(libs.kotlinx.coroutines.android) // Compose implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) implementation(libs.androidx.material.icons.extended) // Sherpa-ONNX for on-device speech recognition implementation(libs.sherpa.onnx) debugImplementation(libs.androidx.ui.tooling) }