Skip to content

[RELEASE-006] Restore trustworthy Android release lint for Kotlin 2.4 #178

Description

@veryCrunchy

Problem

The signed Android release build completes, but lintVitalAnalyzeRelease reports that Kotlin 2.4 metadata is newer than the lint analyzer's expected Kotlin 2.2 metadata. A release must not treat a skipped or partially unreadable lint analysis as a successful safety gate.

Observed diagnostic:

Module was compiled with an incompatible version of Kotlin.
The binary version of its metadata is 2.4.0, expected version is 2.2.0.

The project currently uses Kotlin 2.4.10 and Android Gradle Plugin 8.13.2. Android's compatibility table permits Kotlin 2.4 with supported AGP/R8 versions, but the release lint analyzer still needs a compatible metadata reader: https://developer.android.com/build/kotlin-support and https://kotlinlang.org/docs/gradle-configure-project.html

Requirements

  • Identify the supported AGP/lint/Kotlin/Compose combination without disabling release lint.
  • Keep Kotlin Multiplatform Android and desktop targets working.
  • Make lint metadata incompatibility a hard release failure instead of a successful build with diagnostics.
  • Run lint over the production release sources and dependencies, not only debug substitutes.
  • Avoid dynamic dependency versions or unreviewed toolchain overrides.

Acceptance criteria

  • lintVitalRelease and the chosen full lint task complete without metadata-reader errors.
  • A known lint fixture is detected so the gate proves analysis actually ran.
  • Signed APK/AAB assembly still succeeds with Kotlin 2.4 metadata.
  • Debug, release, desktop, contract, and semantic compiler tests remain green.
  • The prerelease workflow no longer needs a log-text compatibility guard because the tooling itself fails correctly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:releaseBuilds, CI, security, packaging, and releasesbugSomething isn't workingplatform:androidAndroid-specific implementation or validationpriority:P0Required for a trustworthy mobile replacement or prevents data losstype:reliabilityCorrectness, crash prevention, recovery, and data safety

    Type

    No type

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions