plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("org.jetbrains.kotlin.plugin.serialization") id("org.jetbrains.kotlin.plugin.compose") } android { // HeliBoard code expects this namespace to find its R class and BuildConfig namespace = "helium314.keyboard.latin" compileSdk = 35 defaultConfig { applicationId = "helium314.keyboard.ai" minSdk = 31 // MediaPipe LlmInference practical minimum targetSdk = 35 versionCode = 1 versionName = "1.0-ai" ndk { abiFilters += listOf("arm64-v8a", "armeabi-v7a") } } sourceSets { getByName("main") { java.srcDirs( "src/main/java", // AI layer "../heliboard/app/src/main/java" // HeliBoard sources ) res.srcDirs( "src/main/res", "../heliboard/app/src/main/res" ) assets.srcDirs( "../heliboard/app/src/main/assets" ) jniLibs.srcDirs( "../heliboard/app/src/main/jniLibs" ) manifest.srcFile("../heliboard/app/src/main/AndroidManifest.xml") } } externalNativeBuild { ndkBuild { path = file("../heliboard/app/src/main/jni/Android.mk") } } ndkVersion = "28.0.13004108" compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } kotlinOptions { jvmTarget = "17" } buildFeatures { viewBinding = true buildConfig = true compose = true } buildTypes { release { isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) signingConfig = signingConfigs.getByName("debug") } debug { isMinifyEnabled = false applicationIdSuffix = ".debug" versionNameSuffix = "-debug" } } packaging { jniLibs { pickFirsts += setOf( "**/libjni_sentencepiece.so", "**/libc++_shared.so" ) } resources { excludes += setOf( "META-INF/DEPENDENCIES", "META-INF/LICENSE*", "META-INF/NOTICE*", "META-INF/*.kotlin_module" ) } } } dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") implementation("androidx.core:core-ktx:1.16.0") implementation("androidx.recyclerview:recyclerview:1.4.0") implementation("androidx.autofill:autofill:1.3.0") implementation("androidx.viewpager2:viewpager2:1.1.0") implementation("androidx.preference:preference-ktx:1.2.1") implementation("androidx.constraintlayout:constraintlayout:2.2.1") implementation("com.google.android.material:material:1.12.0") implementation(platform("androidx.compose:compose-bom:2025.05.00")) implementation("androidx.compose.material3:material3") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.navigation:navigation-compose:2.8.9") debugImplementation("androidx.compose.ui:ui-tooling") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1") implementation("sh.calvin.reorderable:reorderable:2.4.3") implementation("com.github.skydoves:colorpicker-compose:1.1.3") implementation("com.google.ai.edge.litertlm:litertlm-android:latest.release") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1") }