@@ -18,24 +18,24 @@ signature onto it and publishes that. This way Obtainium users (who installed
1818the GitHub APK) and F-Droid users share one signing key, so updates flow between
1919them without an uninstall/reinstall.
2020
21- - ` commit: v1.0.2 ` pins the build to the release tag. The app version lives as
22- inline literals in ` app/build.gradle.kts ` (` versionCode = 10002 ` ,
23- ` versionName = "1.0.2 " ` ), written by ` release.sh ` at release time. They are
21+ - ` commit: v1.0.3 ` pins the build to the release tag. The app version lives as
22+ inline literals in ` app/build.gradle.kts ` (` versionCode = 10003 ` ,
23+ ` versionName = "1.0.3 " ` ), written by ` release.sh ` at release time. They are
2424 literals, not computed, so F-Droid's static ` checkupdates ` can read them;
2525 versionCode follows ` MAJOR*10000 + MINOR*100 + PATCH ` , monotonic as F-Droid
2626 requires.
2727- ` Binaries: .../releases/download/v%v/link-clear-v%v.apk ` points F-Droid at the
2828 developer-published APK to reproduce. ` %v ` expands to the versionName, which
29- equals the tag (` v1.0.2 ` ), so it resolves to
30- ` link-clear-v1.0.2 .apk ` — the exact asset the release workflow uploads.
29+ equals the tag (` v1.0.3 ` ), so it resolves to
30+ ` link-clear-v1.0.3 .apk ` — the exact asset the release workflow uploads.
3131- ` AllowedAPKSigningKeys: 7e489f6b…057e ` is the SHA-256 of this project's release
3232 signing certificate. ** Verified against the actual published
33- ` link-clear-v1.0.2 .apk ` ** with
33+ ` link-clear-v1.0.3 .apk ` ** with
3434 ` apksigner verify --print-certs ` (the APK is signed with the v2 scheme only).
3535 F-Droid will only publish the developer signature if the rebuilt APK matches
3636 and carries this key.
3737- ` AutoUpdateMode: Version ` — because the tag and ` versionName ` agree
38- (` v1.0.2 ` <-> ` 1.0.2 ` ), F-Droid auto-detects the tag pattern with no template
38+ (` v1.0.3 ` <-> ` 1.0.3 ` ), F-Droid auto-detects the tag pattern with no template
3939 needed. (A literal ` Version v%v ` is rejected by F-Droid's ` check-jsonschema `
4040 step, whose ` AutoUpdateMode ` pattern only allows an optional ` + ` -prefixed
4141 suffix — bare ` Version ` is the correct value here.)
@@ -46,11 +46,11 @@ them without an uninstall/reinstall.
4646### Reproducibility — verified locally, not assumed
4747
4848Path 2 only succeeds if F-Droid's from-source rebuild is byte-identical to the
49- published APK before signing. This has been ** verified for ` v1.0.2 ` ** : a fresh
50- ` git clone ` + ` git checkout v1.0.2 ` built unsigned with the repo toolchain
49+ published APK before signing. This has been ** verified for ` v1.0.3 ` ** : a fresh
50+ ` git clone ` + ` git checkout v1.0.3 ` built unsigned with the repo toolchain
5151(OpenJDK 17.0.20, Gradle 8.14.4, AGP 8.6.1, build-tools 35.0.0) is byte-for-byte
52- identical to the published ` link-clear-v1.0.2 .apk ` across the entire ZIP
53- entries region (SHA-256 ` c6236e79…a78a ` ) and central directory. The only
52+ identical to the published ` link-clear-v1.0.3 .apk ` across the entire ZIP
53+ entries region (SHA-256 ` 360b4c36…045c ` ) and central directory. The only
5454difference is the 8192-byte v2 APK Signing Block — exactly the region F-Droid
5555strips and reattaches the developer signature to.
5656
@@ -61,7 +61,7 @@ Reproduce the check yourself:
6161
6262``` sh
6363source .superpowers/sdd/buildenv.sh # JDK 17 + Android SDK on PATH
64- docs/fdroid-metadata/verify-reproducible.sh v1.0.2
64+ docs/fdroid-metadata/verify-reproducible.sh v1.0.3
6565```
6666
6767** Caveat:** the build should run from a real git checkout at the tag, not a
@@ -88,7 +88,7 @@ clone (its `config/categories.yml` is needed for category validation):
8888 canonical form (` Binaries ` after ` Repo ` , ` AllowedAPKSigningKeys ` after the
8989 ` Builds ` block), so it will not be rewritten.
9090- ` AllowedAPKSigningKeys ` was verified against the published
91- ` link-clear-v1.0.2 .apk ` with ` apksigner verify --print-certs ` .
91+ ` link-clear-v1.0.3 .apk ` with ` apksigner verify --print-certs ` .
9292
9393Re-run these before the MR in case F-Droid's policy or category set has changed
9494since. Install the tool with ` pipx install fdroidserver ` (or
@@ -142,7 +142,7 @@ fdroid build -v -l app.linkclear
142142 endpoints; the app works fully offline with the bundled ClearURLs data.
143143 - ** Build note (Path 2 — reproducible/cross-signed):** F-Droid builds from
144144 source and verifies the result is byte-identical to the developer-published
145- ` link-clear-v1.0.2 .apk ` , then publishes the developer signature
145+ ` link-clear-v1.0.3 .apk ` , then publishes the developer signature
146146 (` AllowedAPKSigningKeys ` ). Note that R8 minification may require a round or
147147 two of reproducibility fixes in CI.
148148
0 commit comments