Skip to content

Android: fix JVM target mismatch + opt-in side-by-side debug install#72

Merged
lamat1111 merged 3 commits into
masterfrom
feat/android-side-by-side-debug-install
Jun 9, 2026
Merged

Android: fix JVM target mismatch + opt-in side-by-side debug install#72
lamat1111 merged 3 commits into
masterfrom
feat/android-side-by-side-debug-install

Conversation

@lamat1111

@lamat1111 lamat1111 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Two related changes that together unblock local Android development on a phone that already has the production Quorum installed.

1. Fix: pin local module JVM target to 17 (d051669)

quorum-crypto and quorum-translation only set their JVM target when AGP version < 8. With current AGP (8+), Java compiles to 17 but Kotlin defaults to 21, which Gradle rejects:

Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (17) and 'compileDebugKotlin' (21).

The expo run:android build fails for this reason on a fresh checkout today. Setting both to 17 unconditionally matches the rest of the Android build and restores building.

2. Feature: opt-in -PsideBySide=true flag (40f68c9)

When set, debug builds get a .debug applicationId suffix and -debug versionName suffix. This lets a developer install the dev build alongside the production app (Play Store / sideloaded release APK) on the same device without uninstalling and losing local app data.

Default behavior is unchanged. Verified empirically: running ./gradlew :app:assembleDebug without the flag produces an APK with applicationId: com.quilibrium.quorummobile (same as before this PR).

Invocation:

./gradlew :app:assembleDebug -PsideBySide=true
adb install -r app/build/outputs/apk/debug/app-debug.apk

Note: expo run:android does not forward unknown args to Gradle, so the flag has to be passed via direct Gradle invocation.

3. Feature: label all debug builds as "Quorum Debug" in the launcher (80b7c1a)

Override app_name to "Quorum Debug" via the existing src/debug/ source set so debug installs are visually distinguishable from the production app on the same home screen. Release builds are unaffected.

lamat1111 added 3 commits June 9, 2026 11:40
quorum-crypto and quorum-translation only set JVM target under AGP < 8.
With AGP 8+ both fall through to defaults, where Java compiles to 17 and
Kotlin to 21, which Gradle rejects ("Inconsistent JVM-target
compatibility").

Set source/target compatibility and kotlinOptions.jvmTarget to 17
unconditionally, matching the rest of the Android build.
Add a Gradle property flag that, when set, gives debug builds a `.debug`
applicationId suffix and `-debug` versionName suffix. Lets developers
install dev builds alongside production/sideloaded release APKs on the
same device without uninstalling and losing local app data.

Default behavior (no flag) is unchanged: `expo run:android` produces the
same APK with the same package name as before. The feature is purely
opt-in via `expo run:android -- -PsideBySide=true` or
`./gradlew :app:assembleDebug -PsideBySide=true`.
Override app_name to "Quorum Debug" via the existing debug source set,
so debug installs are visually distinguishable from production installs
on the same device. Especially useful with -PsideBySide=true where the
prod and debug apps coexist on one device.

Release builds are unaffected: src/debug/ is only merged for the debug
variant.
@lamat1111 lamat1111 merged commit 8074cc2 into master Jun 9, 2026
@lamat1111 lamat1111 deleted the feat/android-side-by-side-debug-install branch June 9, 2026 10:20
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