Skip to content

Move the Android builds under android/ - #525

Merged
ramesh130 merged 5 commits into
mainfrom
issue-521-android-dir
Oct 14, 2026
Merged

ramesh130 merged 5 commits into
mainfrom
issue-521-android-dir

Conversation

@ramesh130

@ramesh130 ramesh130 commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Closes #521

Every Android build now lives under android/. The repository root holds what is shared or has to sit there: docs/, the root documents, config/, .github/, devicelab/, third-party/, Package.swift and ios/. Published coordinates and Gradle project paths are unchanged.

Contributors: move your untracked local.properties into android/. The Gradle root is now android/, so the file is no longer read from the repository root.

Commits

Please merge with --rebase so the two rename commits land unchanged.

  1. Move the Android builds under android/, renames only: 880 files, all R100, no content change. It moves the fifteen modules, build-logic/, demo/, benchmark/, api/, the wrapper, gradle/, settings.gradle.kts, build.gradle.kts and gradle.properties.
  2. The flip.
    • The three location values from the prefactors:
    • Everything else that named the old layout:
      • .gitignore's anchored build outputs and /android/benchmark/out/.
      • Dependabot's three Gradle directories.
      • The Spotless .claude/worktrees/** exclude is removed, since worktrees now sit beside android/ and no target reaches them.
      • The Swift SessionTraceTests, which reads the Kotlin goldens and now reads them at android/superplayer-telemetry/....
      • The benchmark's RunConditions: repoRoot is renamed to gradleRoot, because it is handed the Gradle build. git answers for the whole repository from there anyway.
      • devicelab's selftest: its plant cases run against a scratch repository whose Gradle build is the repository itself, so they now set GRADLE_DIR= explicitly instead of inheriting android. The nested case keeps covering this repository's layout.
      • CLAUDE.md's ## Commands block, and the emulator recipe under it, now run from the root as (cd android && ./gradlew …), (cd android/demo && …) and android/benchmark/bench.
  3. Review follow-ups: comment accuracy, Dependabot's note, column alignment.
  4. Move the iOS benchmark's reports to ios/Benchmark/, renames only: ios-baseline/ becomes ios/Benchmark/baseline/ and ios-phase3/ becomes ios/Benchmark/phase3/. These are iOS reports that came along with benchmark/. Leaving them would have put iOS data in the Android tree, and ios/Benchmark/bench --baseline would have silently created a new root benchmark/ios-phase3/.
  5. Pointing the iOS runner at the new place: --baseline's output, the report writer's relative links (one level deeper now), the two committed reports' matching lines, and the links that named the old place.

Argued decisions

  • Update-command text. The iOS fixtures' header and the two fixture tests' failure messages now say (cd android && ./gradlew updateIosFixtures). That is the same form as CLAUDE.md, and it is correct from the repository root, which is where Name the repository root apart from the Gradle root (#519) #524 decided command lines are written from. The .readings fixtures were regenerated with updateIosFixtures run alone, and the Swift ThroughputTraceFixturesTests writes the same header.
  • GoldenFile.UPDATE_COMMAND stays ./gradlew updateGoldenTraces. It is testkit's public API, and the message reaches consumers who run it from their own Gradle root.
  • One spelling of the Gradle directory per family, as Scripts and CI find the Gradle build through one location #523 set up. The Swift test and the fixture header spell android too, because the Swift side cannot read GRADLE_DIR. The common.sh and ci.yml comments now say so.
  • .editorconfig stays at the root. It also governs md, yml and bat files, and ktlint and IDEs find it by walking up from a file.

Verification

  • (cd android && ./gradlew assemble check --max-workers=1): green. The XML results show 1238 tests with 0 failures and 0 errors; verifyDevicelab and the build-logic tests are included. It was re-run green after the review commits.
  • (cd android && ./gradlew updateIosFixtures) run alone: only the eight .readings headers changed, and they are committed.
  • publishToMavenLocal, then (cd android/demo && ./gradlew assembleDebug spotlessCheck) and (cd android/benchmark && ./gradlew assemble test spotlessCheck): green.
  • devicelab/test/selftest: devicelab 161, jank 20, leak-hunt 34, startup 16, all passed. android/benchmark/bench --help works.
  • git log --follow android/superplayer-core/src/main/kotlin/com/superplayer/core/SuperPlayer.kt reaches back to the first commit.
  • git ls-files | grep -v '^android/' lists only what the issue keeps at the root.

Review

  • Standards: no hard findings. These soft ones are fixed:

    • Comments that claimed GRADLE_DIR was the only spelling.
    • Dependabot's "three builds" wording; there are four, and the benchmark wrapper is still unwatched, as it was before.
    • The worktree note was history, so it is cut to one sentence.
    • The Commands block's comment column was misaligned.

    GoldenFile.UPDATE_COMMAND was flagged as inconsistent and is left as argued above.

  • Spec: one hard finding, now fixed: the iOS benchmark reports had moved into the Android tree, and ios/Benchmark/bench --baseline pointed at a path that no longer existed. That is commits 4 and 5. The soft findings are prose and belong to Documents describe the android/ layout #522.

Left to #522

Prose and KDoc that name moved paths. This covers:

  • the root README.md, CONTRIBUTING.md and docs/
  • CLAUDE.md outside the Commands block
  • android/benchmark/bench's usage comment
  • the fixture tests' KDoc
  • the ref: comments in Swift sources pointing at Kotlin files
  • the Android benchmark reports' ../PRD.md links, which were already wrong before the move

Also pre-existing and out of scope: CI's iOS change filter does not cover the Kotlin goldens or superplayer-testkit.

Skipped

  • ios/check: not run locally. The disk had 6.6 GB free, and a simulator plus DerivedData costs about that much on a shared host. The macOS CI job runs it on this PR, because ios/ and android/superplayer-testmedia/ both changed.
  • Emulator: no emulator run. This changes paths, not playback; the device workflow's paths were checked by inspection and by the devicelab selftests.

CI flakes unrelated to the move: #526 (attempts 1 and 2) and #499 (attempt 3). Merged on that basis at the user's decision; the full check passed locally on this branch.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MJAhQmFgdRRAKUaMHibQLe

ramesh130 and others added 5 commits October 14, 2026 14:11
The fifteen superplayer-* modules, build-logic, demo, benchmark, the released
API surface, the wrapper, gradle/ and the root settings, build script and
properties move as they are. Nothing points at the new layout yet; the next
commit flips the two locations #519 and #520 named. Kept as its own commit so
rename detection carries git log --follow and blame across the move.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MJAhQmFgdRRAKUaMHibQLe
… commands work from the root

The flip #519 and #520 left for this move: superplayer.repositoryRoot is `..`, devicelab's
GRADLE_DIR and both workflows' are `android`. Around it, everything else that named the old
layout by path: .gitignore's anchored build outputs and benchmark runs, Dependabot's three Gradle
directories, the Swift test that reads the Kotlin goldens, and devicelab's plant cases against a
scratch repository that is its own Gradle build, which now say so rather than inheriting the
repository's `android`.

The Spotless exclude for agent worktrees goes: they sit beside android/ rather than under it, so
no target can reach them. The iOS fixtures' header names the update command as it is run from the
repository root, and the fixtures are regenerated with it. The benchmark's run conditions are
handed the library's Gradle build and now name it so. CLAUDE.md's command lines run from the root.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MJAhQmFgdRRAKUaMHibQLe
…unt the benchmark's build in Dependabot's note, and align the command comments

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MJAhQmFgdRRAKUaMHibQLe
ios-baseline/ and ios-phase3/ are the iOS port's reports, measured on the simulator against
AVPlayer, and came under android/ with benchmark/. They go beside the iOS runner that writes them,
as baseline/ and phase3/; the next commit points the runner and its links there.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MJAhQmFgdRRAKUaMHibQLe
…hmark/

--baseline writes into ios/Benchmark/phase3, where the reports now sit; the writer's links to
PRD.md and the telemetry schema are a level deeper, and the two committed reports carry the same
lines it would write now. The READMEs and ios/CLAUDE.md name the new place.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MJAhQmFgdRRAKUaMHibQLe
@ramesh130
ramesh130 merged commit 9055782 into main Oct 14, 2026
9 of 12 checks passed
@ramesh130
ramesh130 deleted the issue-521-android-dir branch October 14, 2026 04:15
ramesh130 added a commit that referenced this pull request Oct 14, 2026
CLAUDE.md's orientation names the four Gradle builds under android/ beside
the Swift package, and every document that named a pre-move path or a root
./gradlew now names the path under android/ and the command in the form
#525 chose, (cd android && ./gradlew ...). ADR bodies are records and are
untouched; the committed benchmark reports are generated records and are too.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MJAhQmFgdRRAKUaMHibQLe
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.

Move the Android builds under android/

1 participant