Как навести порядок в аудиотеке на Android с помощью Lyrico

21 авг 2026
804
25
3
3 недели

Если вы до сих пор храните музыку локально на телефоне в виде файлов FLAC или MP3, то наверняка сталкивались с вечным хаосом в тегах. Скачанный альбом внезапно разбивается на пять разных исполнителей в плеере, обложки нет, а вместо текста песни отображаются иероглифы или пустота.

Десктопные утилиты вроде MusicBrainz Picard или Mp3tag решают эту проблему отлично. Но подключать телефон кабелем к компьютеру каждый раз, когда закинул пару новых треков, откровенно лень. На самом Android нормальных редакторов тегов почти не осталось: старые приложения заброшены, а новые либо напичканы рекламой, либо не умеют ничего сложнее базовой правки названия трека.

Недавно наткнулся на проект Lyrico от разработчика Replica0110. Это свежее приложение с открытым исходным кодом на Kotlin, которое берет на себя рутину по редактированию метаданных и подтягиванию текстов песен прямо на смартфоне.

Что внутри и чем проект интересен

С виду Lyrico выглядит как аккуратный редактор с интерфейсом в стиле HyperOS (здесь используется библиотека компонентов Miuix для Jetpack Compose). Но под капотом спрятана серьезная связка из нативных библиотек и встраиваемого движка.

Приложение умеет:

Реклама
  • Сканировать память устройства и группировать треки по папкам, альбомам или артистам
  • Читать и перезаписывать любые теги в форматах MP3, FLAC, OGG/Opus, M4A/AAC и WAV через проверенную временем библиотеку TagLib
  • Анализировать громкость треков по стандарту EBU R128 через библиотеку libebur128
  • Пакетно переименовывать файлы, массово редактировать поля тегов и удалять мусор
  • Работать с синхронизированными текстами песен в форматах обычного LRC, построчного и даже сложного TTML с караоке-таймингами

Особенно подкупает то, как автор подошел к поиску информации в сети.

Плагины на JavaScript внутри QuickJS

Вместо того чтобы намертво зашивать в код API конкретных китайских или западных музыкальных сервисов (которые регулярно меняют эндпоинты и ломают парсинг), создатель Lyrico вынес всю сетевую логику в плагины.

Каждый плагин представляет собой небольшой скрипт на JavaScript. Внутрь Android-приложения автор встроил легковесный движок quickjs-ng (форк QuickJS Фабриса Беллара с поддержкой современных стандартов JS).

Как устроен процесс:

  1. Вы устанавливаете плагин нужного источника данных через манифест.
  2. Приложение передает поисковый запрос в изолированную среду QuickJS.
  3. Скрипт идет в сеть, парсит метаданные, обложки или тексты, а затем возвращает стандартизированный JSON.
  4. Нативный слой Kotlin принимает результат и записывает его в аудиофайл.

Такой подход дает два плюса. Во-первых, если источник меняет API, достаточно обновить небольшой JS-файл без пересборки всего APK. Во-вторых, любой разработчик может за вечер набросать парсер для своего любимого сайта или локального сервера Navidrome/Subsonic. В репозитории уже есть подробная документация по host API и структуре манифестов.

Интеграция с локальными плеерами

Еще одна деталь, которая выделяет проект среди аналогов: Lyrico умеет работать как внешний редактор метаданных для сторонних плееров.

Вместо того чтобы изобретать собственный встроенный аудиоплеер, разработчик сосредоточился именно на утилитарной части и добавил точки интеграции через Android Intent. Несколько независимых открытых плееров (например, Halcyon, Mica Music, Raws-Music и Prism Music) уже умеют открывать текущий трек напрямую в редакторе Lyrico для быстрой правки.

Как собрать проект локально

Сборка приложения стандартная для Android-проектов со сложным NDK-стеком. Вам понадобятся:

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

Структура модулей предельно простая:

  • lyrico-app — UI на Jetpack Compose, управление музыкальной библиотекой, плагинный рантайм
  • lyrico-audiotag — обертка над C++ библиотеками для чтения и записи тегов
  • docs — документация к API плагинов на базе VitePress

Собрать отладочный APK можно командой в терминале:

./gradlew :lyrico-app:assembleDebug

Если хотите просто проверить компиляцию Kotlin-кода без полной линковки нативных библиотек:

./gradlew :lyrico-app:compileDebugKotlin

Код распространяется под лицензией Apache License 2.0.

Стоит ли пробовать

Lyrico пригодится в двух случаях. Если вы слушаете музыку оффлайн и устали от кривых тегов, это одно из самых удобных решений под Android на текущий момент. Вторая причина взглянуть на проект — инженерная: здесь можно подсмотреть отличный пример встраивания QuickJS в современное Compose-приложение и аккуратную организацию работы с нативными C++ библиотеками через JNI.

Проект еще свежий, часть документации переводится с китайского, но архитектурная задумка выглядит очень практично. Поставить APK можно прямо со страницы релизов на GitHub.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.