Repository navigation
Move the Java toolchain and source level to JDK 26 - #65
Merged
Merged
Conversation
Bump the toolchain, sourceCompatibility/targetCompatibility and both CI setup-java steps from 25 to 26, and correct the docs and comments that name the version. The JaCoCo pin stays at 0.8.15: its comment claimed it was the first release for Java 25 class files (that was 0.8.14); it is in fact the first with official support for the major version 70 files JDK 26 emits, so the comment now says that. 26 is as far as the current stack goes. Verified against AGP 9.4.0, Gradle 9.6.1: javac, R8 (debug and optimising release), all 314 unit tests, JaCoCo and lintRelease pass on JDK 26 output, with the Gradle daemon on both 25 and 26. JDK 27 (GA 2026-09-15) also compiles, dexes and tests, but Android Lint logs "Unsupported class file major version 71" for every class and still exits green with its bytecode checks skipped - a silent loss of the CI gate, so the toolchain comment records that trap for the next bump. Latency and performance impact: none. Only the build toolchain changes; R8 desugars the same source to the same API 30 target, and no runtime code is touched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
sourceCompatibility/targetCompatibilityand both CIsetup-javasteps move from JDK 25 to 26; docs and comments that name the version follow.build.gradle.Why 26 and not 27
JDK 27 went GA on 2026-09-15 and was tested too. It compiles, dexes (R8) and passes the unit tests and JaCoCo, but Android Lint (AGP 9.4.0) cannot read class-file v71: it logs
broken class file? (Unsupported class file major version 71)for every class and still reportsBUILD SUCCESSFULwith its bytecode checks skipped. That silently disables thelintReleasegate, so the new toolchain comment records the trap for the next bump. Gradle's own matrix also stops at 26.Verification (local, AGP 9.4.0 / Gradle 9.6.1)
compileDebugJavaWithJavac/compileReleaseJavaWithJavactestDebugUnitTest--no-build-cache --rerun-tasks)jacocoTestReportlintReleaseUnsupported class filelinesminifyReleaseWithR8(optimising)Corretto 26 is available for
setup-java. Not run locally:assembleRelease(ndk-build) — unaffected by the JDK, and CI covers it.Latency and performance impact
None. Only the build toolchain changes; R8 desugars the same source to the same API 30 target and no runtime code is touched. Worth one install on the Shield (API 30) as the usual sanity check for a toolchain bump, since desugaring of the new class-file version is the only runtime variable.
🤖 Generated with Claude Code