From 4cd0d7b22d068f86233c6e349de76e55962ce805 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Sun, 16 Aug 2026 17:20:52 +1200 Subject: [chore/migrate-cmake] add tasks to extract vosk and fix cmake configurations --- .gitignore | 2 ++ app/build.gradle | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 3377c1a..5cba561 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ vosk/ tmp/ app/build/ app/.cxx/ +app/src/main/jni/vosk +app/src/main/jniLibs .gradle/ gradle-cache/ android-cache/ diff --git a/app/build.gradle b/app/build.gradle index bc9ec9b..b397685 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,6 +2,59 @@ plugins { id 'com.android.application' } +def mainSrcDir = projectDir.toString() + "/src/main" + +task extractVosk { + doLast { + def voskAar = project.configurations.voskFiles.files.find { + it.name.startsWith('vosk-android') + } + + if (voskAar == null) { + throw new GradleException("Vosk AAR not found") + } + + def voskHeaderDir = file("$mainSrcDir/jni/vosk/include") + def voskLibDir = file("$mainSrcDir/jniLibs/arm64-v8a") + + voskHeaderDir.mkdirs() + voskLibDir.mkdirs() + + def headerUrl = "https://raw.githubusercontent.com/alphacep/vosk-api/refs/tags/v0.3.50/src/vosk_api.h" + def headerFile = new File(voskHeaderDir, "vosk_api.h") + headerFile.withOutputStream { out -> + new URL(headerUrl).withInputStream { out << it } + } + + def extractDir = file("$buildDir/tmp/extractVosk") + delete extractDir + extractDir.mkdirs() + + copy { + from zipTree(voskAar) + into extractDir + include "jni/arm64-v8a/libvosk.so" + } + + def voskSoSource = file("$extractDir/jni/arm64-v8a/libvosk.so") + if (voskSoSource.exists()) { + copy { + from voskSoSource + into voskLibDir + } + } else { + throw new GradleException("libvosk.so not found in Vosk AAR") + } + + delete extractDir + } +} + +tasks.whenTaskAdded { task -> + if (task.name.startsWith('configureCMake')) { + task.dependsOn extractVosk + } +} android { namespace 'com.arslaancodes.mokuassistant' compileSdk 34 @@ -28,10 +81,6 @@ android { } } - buildFeatures { - prefab true - } - externalNativeBuild { cmake { path 'src/main/jni/CMakeLists.txt' @@ -48,3 +97,11 @@ android { dependencies { implementation 'com.alphacephei:vosk-android:0.3.75' } + +configurations { + voskFiles { + canBeResolved = true + canBeConsumed = false + extendsFrom implementation + } +} -- cgit v1.2.3