Skip to content

Build: AGP 9, Kotlin 2.4, compileSdk 37 (Agenda Tech toolchain) - #26

Merged
gitubpatrice merged 1 commit into
mainfrom
feat/agp9
Oct 10, 2026
Merged

gitubpatrice merged 1 commit into
mainfrom
feat/agp9

Conversation

@gitubpatrice

Copy link
Copy Markdown
Owner

Moves Notes Tech to the toolchain Agenda Tech and App Manager Tech already run: Gradle 9.8.1, AGP 9.4.1, Kotlin 2.4.10, Hilt 2.60.1, Compose BOM 2026.09.00, Navigation 2.10.2, compileSdk 37. targetSdk stays 36: nothing changes in how the app behaves on a device.

What changes

  • AGP 9 compiles Kotlin itself: the org.jetbrains.kotlin.android plugin is gone.
  • The Kotlin Gradle Plugin is pinned with strictly to the catalog's version (CodeQL 2.27 refuses Kotlin 2.4.20+), as on App Manager Tech.
  • Gradle wrapper 9.8.1, with distributionSha256Sum. Distribution and wrapper jar checked against services.gradle.org and F-Droid's gradle-transparency-log.
  • Dependabot: the ignores that only existed because of AGP 8 are removed; Kotlin stays below 2.4.20.
  • Lint runs out of the Gradle daemon. On the first AGP 9 gate, lint's own Kotlin analyser crashed on test sources while KSP2 ran in the same JVM (a race; lint alone passed). +6 s on the gate.

Measured

Check Result
Local gate, clean, no build cache green — 425 unit tests, 0 failures (same as main)
Room schema vs the Flutter schema no divergence
Release R8 build vs the published 3.0.0 APK (aapt2) same 4 permissions, locales, ABI, targetSdk; versionCodes 5000-5003; APK names unchanged
Instrumented suite, emulator API 34 469/484 — the 15 others need a screen lock (12), a fingerprint (1), a Whisper model (2)
The 15 Keystore tests on a Galaxy S9 (temporary screen lock) 15/15
R8 APK driven on the emulator start-up, editor, preview, links, legal pages, passphrase vault (Argon2), lock/unlock, sealed note — no crash
Debug build on Galaxy S9 (Android 10) and S24 FE (Android 16) starts

F-Droid: the recipe (NDK 27.0.12077973 and CMake 3.22.1 pinned) needs no change; F-Droid already serves Agenda Tech 1.2.0, built on its servers with AGP 9.4.1 and compileSdk 37.

Reviews

Claude Opus 5.5 and GPT-5.6 sol on the diff (0.41 $). GPT: no defect. Claude: one probable finding — AGP 9's stricter R8 keep rules could strip a constructor kept by a member-less rule. Both app rules list their members, the app uses no reflection, and the R8 APK run above covers the library paths.

🤖 Generated with Claude Code

…dk 37)

Gradle 8.13 -> 9.8.1, AGP 8.13.2 -> 9.4.1, Kotlin 2.3.21 -> 2.4.10, Hilt 2.57.2 -> 2.60.1,
Compose BOM 2026.09.00, Navigation 2.10.2, Hilt Navigation 1.4.0, core-ktx 1.19.1,
lifecycle 2.11.0, compileSdk 37. targetSdk stays 36: nothing changes in how the app behaves on
a device. Same chain as Agenda Tech and App Manager Tech.

- AGP 9 compiles Kotlin itself: the org.jetbrains.kotlin.android plugin is gone.
- The Kotlin Gradle Plugin is pinned with `strictly` to the catalog's version, as on App Manager
  Tech: AGP 9 brings its own KGP, and CodeQL 2.27 refuses Kotlin 2.4.20+.
- Gradle 9.8.1: distribution and wrapper jar SHA-256 match services.gradle.org and F-Droid's
  gradle-transparency-log; distributionSha256Sum is now in the wrapper properties.
- Dependabot: the ignores that only existed because of AGP 8 are removed; Kotlin stays capped
  below 2.4.20.
- Lint runs out of the Gradle daemon (android.experimental.runLintInProcess=false). On the first
  AGP 9 gate, lintAnalyzeDebugUnitTest and lintAnalyzeDebugAndroidTest died on an internal error
  of lint's Kotlin analyser while KSP2 ran in the same JVM; lint alone, or after KSP, passed. Out
  of process it shares nothing with KSP. Cost measured: +6 s on the gate.

Measured:
- Local gate from a clean build, no build cache: green; 425 unit tests, 0 failures (same count as
  main). Room schema still matches the Flutter one.
- Release R8 build: versionCodes 5000-5003, and the same 4 permissions, locales, ABI and
  targetSdk as the published 3.0.0 APK (aapt2 on both). APK names unchanged, so the F-Droid
  recipe (NDK 27.0.12077973 and CMake 3.22.1 pinned) builds as before. F-Droid already serves
  Agenda Tech 1.2.0, built on its servers with AGP 9.4.1 and compileSdk 37.
- Instrumented suite on the emulator (API 34): 469/484. The 15 others need what an emulator
  lacks: a screen lock for the Keystore (12), an enrolled fingerprint (1), a Whisper model (2).
  The 15 Keystore tests of those classes, run on a Galaxy S9 with a temporary screen lock: 15/15.
- R8 release APK (x86_64, debug-signed) driven on the emulator: start-up and SQLCipher open,
  editor, Markdown preview, links panel, legal pages, a folder turned into a passphrase vault
  (Argon2 through Bouncy Castle), locked, unlocked, a sealed note created. No crash.
- Debug build started on a Galaxy S9 (Android 10) and a Galaxy S24 FE (Android 16).

Reviews: Claude Opus 5.5 and GPT-5.6 sol on this diff. GPT: no defect. Claude: one probable
finding, AGP 9's R8 defaults (strict full mode for keep rules) could strip a constructor kept by
a member-less rule. Both app rules list their members, the app uses no reflection, and the R8
APK above runs every library path that could be affected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gitubpatrice
gitubpatrice merged commit 30766c4 into main Oct 10, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant