Skip to content

build: establish Compose-ready Android toolchain and CI - #4

Open
MphoCodes wants to merge 1 commit into
codex/android-modernization-specfrom
codex/p1-toolchain-ci
Open

MphoCodes wants to merge 1 commit into
codex/android-modernization-specfrom
codex/p1-toolchain-ci

Conversation

@MphoCodes

@MphoCodes MphoCodes commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

The existing Android build had a non-executable Gradle 8 wrapper, an unconfigured shell runtime, duplicate alpha dependencies and stale manifest/resource entries. This establishes a reproducible Compose-ready build and CI while retaining the existing View screens and Firebase client configuration.

Task 1 only: AGP 9.3.3, Gradle 9.5.0, JDK 21, built-in Kotlin/Compose compiler 2.4.21, Java/Kotlin bytecode 17, compile SDK 37, minimum 27 and temporary target SDK 34. Target 36/system-bar/Back compatibility belongs to Task 2. Includes the exact version catalog, Firebase BOM/main-module import migration, official checksum-verified wrapper, debug-only Material 3 preview, host/API27 workflows and reproducible setup documentation. No opt-out flags, lint suppression/baseline, production Firebase change, later-stage features or merge.

Base: codex/android-modernization-spec at 0239eeb137303134e282be64071a8bde99942288; PR #1 was rechecked open/unmerged before push. This stacked PR contains only Task 1 changes.

Validation on JBR 21.0.10/macOS arm64:

  • ./gradlew --no-daemon --stacktrace :app:checkDebugAarMetadata :app:assembleDebug :app:assembleDebugAndroidTest :app:lintDebug :app:testDebugUnitTest passed on the committed tree (87 tasks, 33s), including a compiled Compose function (JVM major 61 and generated Compose runtime parameters).
  • The same five checks passed from a fresh tracked source export, with no IDE state, project cache/build output or local.properties (87 executed, 1m39s). Initial provisioning used an empty external SDK/cache; clean-source reproduction reused those external caches.
  • Lint: 204 warnings, 0 errors. Existing resource/text/deprecation/update/temporary-target warnings remain visible; three native-alignment warnings identify the retained GIF 1.2.28 library. No errors were disabled.
  • Unit XML report: 1 generated arithmetic test passed, 0 failures/errors/skips; build smoke evidence only.
  • :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.acetimetracker.ExampleInstrumentedTest passed from the clean export: 1 test on a fresh API 27/Android 8.1 Google APIs ARM64 r3 AVD, emulator 37.2.12 build 16428233 (1m16s). Splash launched, Registration resumed, no AndroidRuntime fatal exception. No credentials entered or Firebase records changed.
  • Wrapper ZIP and JAR matched official SHA-256 checksums; SDK CLI 23 installed platforms;android-37.0 revision 2 and AGP resolved compile SDK 37 successfully. The specified toolchain pins needed no adjustment.
  • Fresh independent review: no Critical, Important or Minor findings after inspecting the full diff and actual host/clean/device evidence.
  • Submitted-head GitHub Actions run 39234042052: success on 570b8dd0875f75a3985c4d0eb05470cfa0a116d5. Ubuntu 24.04/Temurin 21.0.12.1 host job passed all 87 acceptance tasks in 3m. The separate clean API27/default/x86_64 emulator job passed its one package test (emulator 37.2.12 build16428233; 74 tasks, 3m46s). Official SDK ZIP integrity checks passed in both jobs.

Plan rulings:

  • Configuration and the compile-only preview use the real build checks; no artificial preview-text test, per the approved task.
  • The plan's Gradle v5 and emulator runner v2 refs were annotated tag objects. The workflow uses their publisher-verified commit targets 0723195856401067f7a2779048b490ace7a47d7c and a421e43855164a8197daf9d8d40fe71c6996bb0d, preserving the selected families. Both actions resolved and completed successfully in the submitted-head workflow; an incorrect future pin would fail CI resolution.
  • API27 Google APIs has no x86-64 package in the stable SDK inventory, so Linux CI uses the published default x86-64 image. The submitted-head device job installed and tested that image successfully; an incorrect future image choice would fail the independent device job.

The reviewer set aside Task2/later product behavior and release readiness under the approved Task1 scope. These remain unverified by this PR; target34 and retained native warnings make that boundary explicit. No deferred minor review findings.

Limitations: package/arithmetic tests do not cover auth, timer, migration or the later target-36 behavior. Retained native GIF 16KB alignment needs release-stage review. Setup commands and report locations: docs/development/android-setup.md.

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