Development¶
Levyra is built as two native applications:
- 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 (using the repository wrapper)
Debug build¶
Debug APK outputs are located at:
Install on a connected device¶
Verify your device connection via ADB:
Physical device qualification¶
On Windows, the repository includes an automated ADB test harness for testing on a connected phone:
The script builds and installs the debug APK, runs cold start measurements, checks the MediaSession state, inspects memory usage, and collects diagnostic logs. Target devices are selected in this order: an authorized USB device, a wireless debugging device, or a running Android emulator.
If you have multiple devices connected, specify the target serial number directly:
To test playback from an existing session and ensure it reaches the active playing state:
To rerun tests quickly without rebuilding or reinstalling:
Diagnostic reports are saved locally to:
Each run generates a JSON summary along with raw Logcat output, MediaSession state dumps, and dumpsys meminfo metrics.
Release build¶
Release builds require a valid signing configuration.
Windows Desktop¶
Requirements¶
- Windows 10 or 11 (x64)
- JDK 21 LTS
- VLC 3.0.x / libvlc runtime
- WiX Toolset 3.14 (for MSI installers)
Building packages¶
cd desktop
.\gradlew.bat check
.\gradlew.bat createReleaseDistributable
.\gradlew.bat packageReleaseMsi packageReleaseExe
Desktop binaries and installers are output to:
Repository map¶
app/ Android client
desktop/ Windows Desktop client
baselineprofile/ Android baseline profile definitions
levyra-recognition/ Audio recognition module
docs/ Project documentation and website
scripts/ Build, CI, and validation tools
Contribution workflow¶
- Create a branch from
main. - Keep your changes focused on a single issue or feature.
- Respect existing architecture, threading rules, and UI conventions.
- Run targeted checks before submitting.
- Check against the repository quality gate:
Before pushing or opening a pull request, run the complete gate:
For complete engineering guidelines and coding standards, review AGENTS.md.