Skip to content

Re-pin compileSdk/targetSdk to 35 (regressed after PR #1 merge)#3

Merged
RomanLeshc merged 1 commit into
mainfrom
tf/compileSdk-35
May 11, 2026
Merged

Re-pin compileSdk/targetSdk to 35 (regressed after PR #1 merge)#3
RomanLeshc merged 1 commit into
mainfrom
tf/compileSdk-35

Conversation

@phwizard
Copy link
Copy Markdown
Contributor

Summary

PR #1 included commit `9d9846b` pinning `compileSdk` / `targetSdk` from 37 → 35, but the change was lost when the PR was merged (`cb540c3`). `main` is back at `compileSdk = 37` and a fresh `@ethora/setup → Android Studio sync` fails on every default install with the opaque error:

```
Could not isolate parameters of artifact transform D8BackportedMethodsGenerator

Failed to find Platform SDK with path: platforms;android-37
```

Why this matters

There is no stable `android-37` base Platform SDK download — only previews (`android-CANARY`, `android-CinnamonBun`, `android-37.0`). Targeting `compileSdk = 37` forces every developer onto:

  1. A preview SDK install via SDK Manager → Show Package Details, and
  2. A newer Android Studio that can parse the v4 `package.xml` schema (`canary-number` / `beta-api-level` elements that AGP 8.7's bundled cmdline-tools doesn't understand).

That's not a reasonable bar for a sample app's first-run experience.

Fix

Same one-line change as `9d9846b`: pin both back to 35 (Android 15, current stable that ships as a base SDK Manager download).

Bump back to 36/37 once those exist as stable base entries — flagged in the comment in `libs.versions.toml`.

Test plan

  • `./gradlew :app:assembleDebug` succeeds on a default Android Studio install with API 35 SDK present (no preview platforms required).
  • No regressions in the Compose preview pane in Studio.

This regressed when PR #1 was merged (cb540c3) — commit 9d9846b in
that PR pinned compileSdk to 35, but the merge appears to have lost
that change. Result: a fresh '@ethora/setup → open in Android Studio'
flow on a default install fails with the opaque
'Could not isolate parameters of artifact transform
D8BackportedMethodsGenerator' error because there is no stable
'android-37' base Platform SDK download — only previews
(android-CANARY, android-CinnamonBun, android-37.0).

Re-applying the same fix on a fresh PR. Same comment block as 9d9846b
so the rationale lives next to the version literal.

Bump back to 36/37 once those exist as stable base entries in SDK
Manager.
@RomanLeshc RomanLeshc merged commit b407a09 into main May 11, 2026
phwizard added a commit that referenced this pull request May 11, 2026
Adds .maestro/ with 10 placeholder flows covering ~80% of typical
SDK usage patterns:

  01-login-email           email + password login (catches the
                           TOKEN_WRONG_TYPE / wrong-base-URL class
                           of regressions we hit this week)
  02-login-jwt             client-flow JWT auth via /users/client
  03-list-rooms            GET /chats/my + unread counts
  04-send-text             full XMPP send round-trip
  05-receive-text          MAM push delivery (uses helper script
                           to send-as-bob via REST while alice
                           waits in-app)
  06-attach-file           PendingMediaSendQueue + chunked upload
  07-reconnect-airplane    airplane mode toggle, ConnectionStore
                           recovery without remount
  08-push-deep-link        synthetic notification intent → room
  09-logout-relogin        DataStore not leaking previous-user state
  10-switch-app            multi-tenant app-switcher (alice on app A
                           → charlie on app B without remount)

Each flow is a runnable YAML stub with realistic semantic anchors
based on the playground's actual UI. A few ($MAESTRO_TEST_*)
variables hold credentials, sourced from CI secrets so no real
data lives in source — fixtures/test-users.yaml documents the
contract.

CI workflow (.github/workflows/maestro.yml):

  - macOS runner (HAXM/hypervisor needed for emulator).
  - Single API level on PRs (34); full matrix [26, 30, 34] on
    release tags.
  - .env on the runner is composed from secrets, never checked in.
  - Failures upload Maestro recordings as artifacts (14d retention).

Both this repo's README and (paired commit on ethora-sdk-android
PR #3) the SDK README gain a "Testing" section explaining the
two-layer split:

  Layer 1 — hermetic component tests in ethora-sdk-android
            (chat-core/src/test, chat-ui/src/androidTest, ethora-component/src/test)

  Layer 2 — real-server smoke flows here, gating SDK release tags

The split keeps SDK tests fast and offline-runnable while pushing
network/integration flows to where the running app is.

Several flows reference helper scripts (.maestro/scripts/sendAsBob.js,
toggleAirplaneMode.sh, sendPushIntent.sh) and asset fixtures
(test image for 06-attach-file) that don't exist yet — left as
TODOs in the YAML comments. First green flow can be 01 or 04 with
a populated .env; the rest can fill in incrementally.
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.

2 participants