>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Kotlin

So organisierst du deine Audio-Bibliothek auf Android mit Lyrico

Wenn du Musik immer noch lokal auf deinem Phone als FLAC- oder MP3-Dateien speicherst, hast du wahrscheinlich schon mit dem ewigen Tag-Chaos zu kämpfen gehabt. Ein heruntergeladenes Album wird plötzlich in fünf verschiedene Künstler in deinem Player aufgeteilt, es gibt kein Cover-Art, und statt Lyrics siehst du nur Kauderwelsch oder gar nichts.

Desktop-Tools wie MusicBrainz Picard oder Mp3tag lösen dieses Problem gut. Aber dein Phone jedes Mal mit dem Computer zu verbinden, wenn du ein paar neue Tracks hinzufügst, ist schlicht und ergreifend mühselig. Auf Android selbst sind anständige Tag-Editoren nahezu verschwunden: alte Apps werden nicht mehr weiterentwickelt, und neue sind entweder voller Werbung oder können nur einfache Titeländerungen vornehmen.

Ich habe kürzlich das Projekt Lyrico vom Entwickler Replica0110 entdeckt. Es ist eine frische Open-Source-App, die mit Kotlin entwickelt wurde und die mühselige Arbeit der Bearbeitung von Metadaten und dem Abrufen von Lyrics direkt auf deinem Smartphone erledigt.

Was steckt drin und warum das Projekt interessant ist

Auf den ersten Blick sieht Lyrico wie ein aufgeräumter Editor mit einer HyperOS-artigen Oberfläche aus (unter Verwendung der Miuix-Komponentenbibliothek für Jetpack Compose). Aber unter der Haube verbirgt sich eine ernstzunehmende Kombination aus nativen Bibliotheken und einer eingebetteten Engine.

Die App kann:

  • Den Gerätespeicher scannen und Tracks nach Ordnern, Alben oder Künstlern gruppieren
  • Alle Tags in MP3, FLAC, OGG/Opus, M4A/AAC und WAV-Formaten lesen und schreiben – über die bewährte TagLib-Bibliothek
  • Die Lautstärke von Tracks mit dem EBU R128-Standard über die libebur128-Bibliothek analysieren
  • Dateien im Batch umbenennen, Tag-Felder massenhaft bearbeiten und Datenmüll entfernen
  • Mit synchronisierten Lyrics in Standard-LRC, Zeile für Zeile und sogar komplexen TTML-Formaten mit Karaoke-Timings arbeiten

Was besonders auffällt, ist, wie der Autor das Thema Online-Informationsabruf angegangen ist.

JavaScript-Plugins innerhalb von QuickJS

Statt APIs für bestimmte chinesische oder westliche Musikdienste fest zu kodieren (die regelmäßig ihre Endpunkte ändern und das Parsing unterbrechen), hat der Lyrico-Ersteller die gesamte Netzwerklogik in Plugins ausgelagert.

Jedes Plugin ist ein kleines JavaScript-Script. Der Autor hat die leichtgewichtige quickjs-ng-Engine (ein QuickJS-Fork von Fabrice Bellard mit modernem JS-Standards-Support) in der Android-App eingebettet.

So funktioniert der Prozess:

  1. Du installierst eine Datenquellen-Plugin über das Manifest.
  2. Die App übergibt eine Suchanfrage an die isolierte QuickJS-Umgebung.
  3. Das Script geht online, parst Metadaten, Cover oder Lyrics und gibt standardisiertes JSON zurück.
  4. Die native Kotlin-Schicht empfängt das Ergebnis und schreibt es in die Audiodatei.

Dieser Ansatz bietet zwei Vorteile. Erstens: Wenn eine Quelle ihre API ändert, aktualisierst du einfach eine kleine JS-Datei, ohne die gesamte APK neu bauen zu müssen. Zweitens: Jeder Entwickler kann an einem Abend einen Parser für seine Lieblingsseite oder einen lokalen Navidrome/Subsonic-Server erstellen. Das Repository enthält bereits eine detaillierte Dokumentation zur Host-API und zur Manifest-Struktur.

Integration mit lokalen Playern

Ein weiteres Detail, das dieses Projekt von anderen abhebt: Lyrico kann als externer Metadaten-Editor für Drittanbieter-Player fungieren.

Statt einen eigenen eingebauten Audio-Player zu entwickeln, konzentrierte sich der Entwickler auf den Utility-Aspekt und fügte Integrationspunkte über Android Intent hinzu. Mehrere unabhängige Open-Source-Player (zum Beispiel Halcyon, Mica Music, Raws-Music und Prism Music) wissen bereits, wie man den aktuellen Track direkt im Lyrico-Editor für schnelle Korrekturen öffnet.

So baust du das Projekt lokal

Das Bauen der App ist Standard für Android-Projekte mit einem komplexen NDK-Stack. Du wirst Folgendes benötigen:

  • JDK 21
  • Android SDK und Android NDK 29
  • CMake 4.1.2

Die Modulstruktur ist unkompliziert:

  • lyrico-app — UI auf Jetpack Compose, Musikbibliotheks-Management, Plugin-Laufzeit
  • lyrico-audiotag — Wrapper über C++-Bibliotheken zum Lesen und Schreiben von Tags
  • docs — Plugin-API-Dokumentation basierend auf VitePress

Du kannst eine Debug-APK mit diesem Terminal-Befehl bauen:

./gradlew :lyrico-app:assembleDebug

Wenn du nur die Kotlin-Code-Kompilierung testen möchtest, ohne vollständige native Bibliotheks-Verknüpfung:

./gradlew :lyrico-app:compileDebugKotlin

Der Code wird unter der Apache License 2.0 vertrieben.

Lohnt es sich, es zu probieren?

Lyrico ist in zwei Fällen praktisch. Wenn du offline Musik hörst und genug von chaotischen Tags hast, ist es eine der bequemsten Lösungen auf Android. Der zweite Grund, sich das Projekt anzusehen, ist die Ingenieurskunst: Du siehst ein großartiges Beispiel für die Einbettung von QuickJS in eine moderne Compose-App und die saubere Organisation der Arbeit mit nativen C++-Bibliotheken über JNI.

Das Projekt ist noch frisch, ein Teil der Dokumentation wird vom Chinesischen übersetzt, aber die architektonische Idee wirkt sehr praktisch. Du kannst die APK direkt von der Releases-Seite auf GitHub installieren.

Ähnliche Projekte