Development¶
Levyra contains two native application targets:
- Android — Kotlin, Jetpack Compose and AndroidX Media3 / ExoPlayer.
- Windows — Kotlin, Compose Multiplatform and libvlc.
Clone the repository¶
Android¶
Requirements¶
- JDK 17
- Android SDK Platform 37
- Gradle 9.7.0 through the repository wrapper
Debug build¶
Debug APKs are written under:
Install on a connected device¶
Verify ADB first when needed:
Physical-device qualification¶
On Windows, the repository includes a repeatable ADB qualification harness for a connected Android phone:
The harness builds and installs the current debug APK unless asked not to, performs repeated cold starts, inspects Levyra's MediaSession, captures process memory, and stores focused logcat and diagnostic dumps. Target selection follows a fixed fallback order: an authorized USB device first, then Android Wireless Debugging, then a running Android emulator. If no USB target is available, the harness also tries to reconnect one already-paired Wireless Debugging device discovered through ADB mDNS before falling back to the emulator.
Wireless pairing remains an Android/ADB setup step; the harness never handles pairing codes or stores pairing secrets. If more than one target exists at the selected priority, select the target explicitly:
To exercise an existing or restored Levyra playback session and require it to reach PLAYING:
Playback exercise is intentionally limited to an already available Levyra MediaSession and queue. The harness does not add a debug-only playback entry point, bypass onboarding, inject credentials, or depend on a private account. If it starts a paused session, it sends pause again before finishing.
For fast reruns after a local build and install:
Reports are written under:
Each run produces a JSON summary plus raw local Logcat, MediaSession, and dumpsys meminfo evidence. .report/ is ignored by Git.
Release compile¶
Release signing requirements differ from local debug builds.
Windows Desktop¶
Requirements¶
- Windows x64
- JDK 21 LTS
- VLC 3.0.x / libvlc
- WiX Toolset 3.14
cd desktop
.\gradlew.bat check
.\gradlew.bat createReleaseDistributable
.\gradlew.bat packageReleaseMsi packageReleaseExe
Desktop release artifacts are produced under:
Repository map¶
app/ Android client
desktop/ Windows client
baselineprofile/ Android baseline-profile support
levyra-recognition/ Recognition-related module
docs/ Repository documentation
scripts/ Validation and project tooling
Contribution workflow¶
- Branch from the latest
main. - Keep the change focused.
- Preserve current architecture and user-visible behavior outside the intended scope.
- Run the narrowest useful validation.
- Run Levyra's repository quality gate before publication.
- Open a focused pull request with truthful test evidence.
The repository quality gate is:
Before push or PR publication, repository instructions require the full profile:
For the complete engineering contract, read AGENTS.md.