build: Android's built-in Kotlin, the three plugins applying KGP themselves patched in third_party/

AGP 9 compiles Kotlin itself (android.builtInKotlin=true in every app),
and warns that applying the Kotlin Gradle Plugin will soon fail.
flutter_web_auth_2 5.1.0, keyboard_height_plugin 0.3.0 and flutter_tts
4.2.5 still apply it unconditionally, so their pub releases are copied
into third_party/ with only their android/build.gradle changed, and
the root overrides them by path (third_party/README.md says when to
drop each). The servers' images copy third_party/, as pub refuses an
override whose path is missing. third_party/ isn't our own code: left
out of the analysis and the format check.

All four apps' APKs build without the warning. A Kotlin daemon's
session file that slipped into Train's android/ goes, and every app's
android/.gitignore keeps .kotlin/ out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-04 00:15:55 +01:00
commit 438ce20dbf
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -57,6 +57,20 @@ dependency_overrides:
# (`Logger.standard`, `Logger.verbose`, `Ansi`, `Progress`), the same in 0.5.2.
# Drop this once flutter_launcher_icons allows 0.5.
cli_util: ^0.5.2
# Three Android plugins patched for Kotlin built into the Android Gradle
# plugin (android.builtInKotlin=true, which every app sets since 4 Nov
# 2026): their latest releases still apply the Kotlin Gradle plugin
# themselves, which Flutter warns will fail builds. Only android/build.gradle
# differs from the release (third_party/README.md); drop each override once
# its plugin's own release has migrated. flutter_web_auth_2 is
# halkyon_oidc_flutter's, keyboard_height_plugin appflowy_editor's (Learn's
# notes), flutter_tts Learn's voice mode's.
flutter_tts:
path: third_party/flutter_tts
flutter_web_auth_2:
path: third_party/flutter_web_auth_2
keyboard_height_plugin:
path: third_party/keyboard_height_plugin
# The offline sync package's shared part from our fork: v0.0.10 with seven
# changes. Byte payloads compared as bytes: v0.0.10 compares them byte by byte
# through a UUID parse that throws for each byte, so a sync touching a few thousand