diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 40d4923d1..dd8a42201 100755 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -48,8 +48,8 @@ android { applicationId = "xyz.leinss.TobiBoard" minSdk = 21 targetSdk = 35 - versionCode = 6812 - versionName = "6.8.12" + versionCode = 6813 + versionName = "6.8.13" buildConfigField("boolean", "ALLOW_USER_SUPPLIED_JNI", "false") buildConfigField("boolean", "ENABLE_GESTURE_DATA_GATHERING", "false") manifestPlaceholders["gestureDataProviderEnabled"] = "false" diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 877026845..f38589124 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -3,6 +3,14 @@ native ; } +# sherpa-onnx: the native library (libsherpa-onnx-jni.so) reads the *fields* of these config +# classes by name via JNI GetFieldID (e.g. "decodingMethod" on OfflineRecognizerConfig) and calls +# their constructors/getters reflectively. R8 renames fields/classes by default, so without this the +# native OfflineRecognizer fails to construct in minified release builds with +# "Failed to get field ID for decodingMethod" — on-device voice input silently never runs (works in +# unminified debug only). Keep the whole API surface so JNI name lookups resolve. +-keep class com.k2fsa.sherpa.onnx.** { *; } + # Keep classes that are used as a parameter type of methods that are also marked as keep # to preserve changing those methods' signature. -keep class helium314.keyboard.latin.dictionary.Dictionary diff --git a/fastlane/metadata/android/en-US/changelogs/6813.txt b/fastlane/metadata/android/en-US/changelogs/6813.txt new file mode 100644 index 000000000..c08d06cd8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/6813.txt @@ -0,0 +1 @@ +- Fixed on-device voice typing: the speech recognizer failed to load in release builds, so dictation never produced text. It now loads and transcribes correctly.