Recently Written · git

subread-android

SubRead for Android: times an audiobook against its ebook on the device

git clone https://github.com/equwal/subread-android

Log | Files | Refs


commit 588de074cbe5e7f6164fc40aac4317005589143c
equwal <truex@equwal.com>
2026-09-26 18:33:44 -0700

Link the speech library without a build ID, and set the version to 0.9.3

The F-Droid build of 0.9.2 differed from the signed APK only in the 20 bytes of the GNU build ID of libsubread_whisper.so. The linker makes the ID from the debug information, and that holds the build folder of Gradle (.cxx/<hash>), whose name depends on the CMake arguments of each machine. Without the ID, the stripped library is the same everywhere.

 app/build.gradle.kts                              |  4 ++--
 app/src/main/cpp/CMakeLists.txt                   |  4 ++++
 fastlane/metadata/android/en-US/changelogs/13.txt |  1 +
 fdroid/space.subread.app.yml                      | 10 +++++-----
 4 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index ba9a8e6..77fdcc5 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -28,8 +28,8 @@ android {
         minSdk = 26
         targetSdk = 36
         // Plain numbers, in this file: F-Droid reads them from here to find a new release.
-        versionCode = 12
-        versionName = "0.9.2"
+        versionCode = 13
+        versionName = "0.9.3"
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
 
         // A link to the Ko-fi page. Google Play is not given it (-PplayStore=true): its
diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt
index b5de705..9e9d1c1 100644
--- a/app/src/main/cpp/CMakeLists.txt
+++ b/app/src/main/cpp/CMakeLists.txt
@@ -46,3 +46,7 @@ add_subdirectory(${WHISPER_DIR} whisper EXCLUDE_FROM_ALL)
 add_library(subread_whisper SHARED whisper_jni.c)
 target_link_libraries(subread_whisper PRIVATE whisper log)
 target_link_options(subread_whisper PRIVATE -Wl,--gc-sections -Wl,--exclude-libs,ALL)
+# No GNU build ID. The linker makes it from the debug information, and that holds the
+# build folder of Gradle (.cxx/<hash>), whose name is different on each machine.
+# Without it, the stripped library is the same on the F-Droid build server.
+target_link_options(subread_whisper PRIVATE -Wl,--build-id=none)
diff --git a/fastlane/metadata/android/en-US/changelogs/13.txt b/fastlane/metadata/android/en-US/changelogs/13.txt
new file mode 100644
index 0000000..7d78bd2
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/13.txt
@@ -0,0 +1 @@
+The speech library has no build ID, so the F-Droid build is the same as the signed APK on GitHub. Nothing else changes.
diff --git a/fdroid/space.subread.app.yml b/fdroid/space.subread.app.yml
index b069257..ccc699b 100644
--- a/fdroid/space.subread.app.yml
+++ b/fdroid/space.subread.app.yml
@@ -16,9 +16,9 @@ Repo: https://github.com/equwal/subread-android.git
 Binaries: https://github.com/equwal/subread-android/releases/download/v%v/SubRead-%v.apk
 
 Builds:
-  - versionName: 0.9.2
-    versionCode: 12
-    commit: v0.9.2
+  - versionName: 0.9.3
+    versionCode: 13
+    commit: v0.9.3
     subdir: app
     submodules: true
     sudo:
@@ -48,5 +48,5 @@ MaintainerNotes: |-
 
 AutoUpdateMode: Version
 UpdateCheckMode: Tags
-CurrentVersion: 0.9.2
-CurrentVersionCode: 12
+CurrentVersion: 0.9.3
+CurrentVersionCode: 13