Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -1739,6 +1739,19 @@ Three smaller traps, each found by a test that had to be written twice:
`common.get_androguard_APK(f)._v2_blocks`, and everything in that dict is a rejection
while `0x7109871A` (signature scheme v2) and `0x42726577` (verity padding) are the two
that belong there.
- **The three per-ABI APKs are numbered by this repository, not by Flutter.** `abiCodes`
in `android/app/build.gradle.kts` overrides each split's `versionCodeOverride` to
`build number × 10 + 1|2|3` (armeabi-v7a, arm64-v8a, x86_64), which is the scheme F-Droid
asks Flutter apps for and which `VercodeOperation: 10 * %c + N` in the recipe mirrors.
Flutter's own scheme is `1|2|4 × 1000 + build number`; ours wins because this block runs
after the plugin's, which was measured rather than assumed. Two things about it are sharp.
It **counts smaller** than what it replaced — at build 15 it gives 151/152/153 where the
released APKs are 1015/2015/4015 — and Android refuses an update whose number is lower, so
the switch cost a jump of the build number to **402**, the first value leaving all three
above their predecessors. And a version code is forever: it may only ever grow, so any
further change of scheme has the same arithmetic to satisfy. Flutter's scheme also had a
ceiling this one does not — at build 1000 its armeabi code (2000) collides with arm64's at
build 0.
- **The build CI hands out installs beside a real one, not over it.** Every
pull request's `Build Android APK` job uploads the arm64-v8a APK as an
artifact, so a change can be installed rather than only read. It is built with
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
Notable changes per release. Dates are release dates; the git tags carry the
exact commits.

## 1.11.4 — 2026-09-06

- **Nothing changes in the app.** The three per-ABI builds are numbered by a different
scheme, at F-Droid's request: `10 × build number + 1|2|3` rather than Flutter's own
`1000|2000|4000 + build number`. Android will not install a build whose number is lower
than the installed one, and the new scheme counts smaller — so the build number jumps
from 15 to 402, which is the first value that leaves every one of the three above what
1.11.3 published. The version you see is unaffected.

## 1.11.3 — 2026-09-05

- **Nothing changes in the app.** The Android build no longer writes Gradle's dependency
Expand Down
13 changes: 13 additions & 0 deletions android/app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import com.android.build.gradle.internal.api.ApkVariantOutputImpl
import java.util.Properties

plugins {
Expand Down Expand Up @@ -176,6 +177,18 @@ android {
}
}

// F-Droid's requested ABI-split version code scheme (review on fdroiddata!47901).
val abiCodes = mapOf("armeabi-v7a" to 1, "arm64-v8a" to 2, "x86_64" to 3)
android.applicationVariants.configureEach {
val variant = this
variant.outputs.forEach { output ->
val abiVersionCode = abiCodes[output.filters.find { it.filterType == "ABI" }?.identifier]
if (abiVersionCode != null) {
(output as ApkVariantOutputImpl).versionCodeOverride = variant.versionCode * 10 + abiVersionCode
}
}
}

kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
Expand Down
2 changes: 1 addition & 1 deletion fastlane/metadata/android/de-DE/changelogs/default.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.11.3 ändert nichts Sichtbares. Die APK enthält keinen Block mit Gradle-Abhängigkeitsdaten mehr, den ohnehin nur Google lesen konnte; gebraucht wurde er in der App nie.
1.11.4 ändert nichts Sichtbares. Die drei Downloads sind intern anders nummeriert, auf Wunsch von F-Droid; an der angezeigten Version ändert das nichts.
2 changes: 1 addition & 1 deletion fastlane/metadata/android/en-US/changelogs/default.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.11.3 changes nothing you can see. The APK no longer carries a block of Gradle dependency data that only Google could read; nothing in the app ever used it.
1.11.4 changes nothing you can see. The three downloads are numbered differently internally, at F-Droid's request; the version you see is unaffected.
32 changes: 17 additions & 15 deletions fdroid/metadata/dev.calyptra.pappus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ Categories:
- Finance Manager
- Navigation
- Public Transport
- Schedule
License: GPL-3.0-or-later
AuthorName: Calyptra Software
AuthorEmail: calyptra-software@proton.me
AuthorWebSite: https://github.com/Calyptra-Software
SourceCode: https://github.com/Calyptra-Software/PappusTravelPlanner
IssueTracker: https://github.com/Calyptra-Software/PappusTravelPlanner/issues
Changelog: https://github.com/Calyptra-Software/PappusTravelPlanner/blob/HEAD/CHANGELOG.md
Expand All @@ -14,9 +16,9 @@ RepoType: git
Repo: https://github.com/Calyptra-Software/PappusTravelPlanner.git

Builds:
- versionName: 1.11.2
versionCode: 1014
commit: 762a2209d64bbfa408ad24401b479e3b49471994
- versionName: 1.11.4
versionCode: 4021
commit: 63ee5ac35f0645d2e6b4162f341c1930ee070cf3
sudo:
- mkdir -p /home/runner/work/PappusTravelPlanner
- chown -R vagrant /home/runner
Expand Down Expand Up @@ -57,9 +59,9 @@ Builds:
- mv $repo dev.calyptra.pappus
ndk: r28c

- versionName: 1.11.2
versionCode: 2014
commit: 762a2209d64bbfa408ad24401b479e3b49471994
- versionName: 1.11.4
versionCode: 4022
commit: 63ee5ac35f0645d2e6b4162f341c1930ee070cf3
sudo:
- mkdir -p /home/runner/work/PappusTravelPlanner
- chown -R vagrant /home/runner
Expand Down Expand Up @@ -100,9 +102,9 @@ Builds:
- mv $repo dev.calyptra.pappus
ndk: r28c

- versionName: 1.11.2
versionCode: 4014
commit: 762a2209d64bbfa408ad24401b479e3b49471994
- versionName: 1.11.4
versionCode: 4023
commit: 63ee5ac35f0645d2e6b4162f341c1930ee070cf3
sudo:
- mkdir -p /home/runner/work/PappusTravelPlanner
- chown -R vagrant /home/runner
Expand Down Expand Up @@ -148,9 +150,9 @@ AllowedAPKSigningKeys: 5bb5d79192cca90b847d80924e859762fc269f7e1e9fd35d5f71c398e
AutoUpdateMode: Version
UpdateCheckMode: Tags ^v[\d.]+$
VercodeOperation:
- '%c + 1000'
- '%c + 2000'
- '%c + 4000'
- 10 * %c + 1
- 10 * %c + 2
- 10 * %c + 3
UpdateCheckData: pubspec.yaml|version:\s.+\+(\d+)|.|version:\s(.+)\+
CurrentVersion: 1.11.2
CurrentVersionCode: 4014
CurrentVersion: 1.11.4
CurrentVersionCode: 4023
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ publish_to: 'none'

# In Android, build-name is used as versionName while build-number is used as
# versionCode; both can be overridden with `flutter build --build-name/--build-number`.
version: 1.11.3+15
version: 1.11.4+402

environment:
sdk: ^3.12.0
Expand Down