Skip to content

Commit 562bef7

Browse files
committed
Point recipe at v1.0.3 (clean signing block, verified reproducible)
1 parent 9584bb5 commit 562bef7

2 files changed

Lines changed: 23 additions & 23 deletions

File tree

docs/fdroid-metadata/README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,24 @@ signature onto it and publishes that. This way Obtainium users (who installed
1818
the GitHub APK) and F-Droid users share one signing key, so updates flow between
1919
them 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

4848
Path 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
5454
difference is the 8192-byte v2 APK Signing Block — exactly the region F-Droid
5555
strips and reattaches the developer signature to.
5656

@@ -61,7 +61,7 @@ Reproduce the check yourself:
6161

6262
```sh
6363
source .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

9393
Re-run these before the MR in case F-Droid's policy or category set has changed
9494
since. 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

docs/fdroid-metadata/app.linkclear.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,26 @@ Repo: https://github.com/kisst/link-clear.git
1515
Binaries: https://github.com/kisst/link-clear/releases/download/v%v/link-clear-v%v.apk
1616

1717
Builds:
18-
- versionName: 1.0.2
19-
versionCode: 10002
20-
commit: v1.0.2
18+
- versionName: 1.0.3
19+
versionCode: 10003
20+
commit: v1.0.3
2121
subdir: app
2222
gradle:
2323
- yes
2424

2525
AllowedAPKSigningKeys: 7e489f6b0342db48ebcdb30312965e840589f1a335438046aefc2dfc548d057e
2626

2727
MaintainerNotes: |-
28-
Reproducible-builds (Path 2). v1.0.2 is verified byte-for-byte reproducible
29-
against the published link-clear-v1.0.2.apk: identical ZIP entries region
30-
(SHA-256 c6236e79...a78a) and central directory, differing only by the v2 APK
28+
Reproducible-builds (Path 2). v1.0.3 is verified byte-for-byte reproducible
29+
against the published link-clear-v1.0.3.apk: identical ZIP entries region
30+
(SHA-256 360b4c36...045c) and central directory, differing only by the v2 APK
3131
Signing Block. Reproduced with OpenJDK 17, Gradle 8.14.4 (wrapper-pinned), AGP
3232
8.6.1 (pinned in gradle/libs.versions.toml -> build-tools 35.0.0). No NDK,
3333
no jvmToolchain (so no toolchain provisioning is needed). versionCode and
3434
versionName are inline literals in app/build.gradle.kts for static detection.
35-
Verify: docs/fdroid-metadata/verify-reproducible.sh v1.0.2
35+
Verify: docs/fdroid-metadata/verify-reproducible.sh v1.0.3
3636
3737
AutoUpdateMode: Version
3838
UpdateCheckMode: Tags
39-
CurrentVersion: 1.0.2
40-
CurrentVersionCode: 10002
39+
CurrentVersion: 1.0.3
40+
CurrentVersionCode: 10003

0 commit comments

Comments
 (0)