blob: b3976857ceb5b9ee7dfa7e73cfc4e9a95c687a4a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
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
defaultConfig {
applicationId 'com.arslaancodes.mokuassistant'
minSdk 26
targetSdk 34
versionCode 1
versionName '1.0'
externalNativeBuild {
cmake {
cppFlags ''
abiFilters 'arm64-v8a'
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
}
}
externalNativeBuild {
cmake {
path 'src/main/jni/CMakeLists.txt'
}
}
sourceSets {
main {
jni.srcDirs = ['src/main/jni']
}
}
}
dependencies {
implementation 'com.alphacephei:vosk-android:0.3.75'
}
configurations {
voskFiles {
canBeResolved = true
canBeConsumed = false
extendsFrom implementation
}
}
|