LynMusic:跨平台本地音乐播放器
用 Kotlin Multiplatform 打造的跨平台本地音乐播放器,覆盖 Android、TV、车机与桌面。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v1.1.3
- 平台
- Windows、macOS、Linux
详细介绍
项目简介
LynMusic 是一款面向个人音乐收藏场景的跨平台本地音乐播放器,基于 Kotlin Multiplatform 开发,可运行在 Android 手机/平板、Android TV、Android Automotive 车机,以及 Windows、macOS、Linux 的 JVM 桌面环境。
作者做这个播放器的初衷很直接:不少本地播放器的歌词搜索不好用,有些歌很难搜到;同时也想借项目学习 KMP,并在有了 codex 这类编程工具后,可以自主决定功能与界面。
原生 Swift 版本已上架苹果商店(iPhone、iPad、Mac):LynMusic App - App Store


主要功能
- 多种音乐来源:支持本地文件夹导入,也可接入 Samba、WebDAV、Navidrome 等私有音乐来源,把散落在硬盘、NAS 和自建音乐服务里的内容汇总到同一套曲库;为多端统一数据,官方推荐使用 Navidrome。
- 曲库浏览与管理:按歌曲、专辑、艺人等多维度浏览,支持喜欢、歌单、播放队列等常用管理能力。
- 歌词能力:歌词搜索、在线结果回填、歌词分享,以及逐字歌词绘制与歌词样式调节。
- 标签编辑:可修改音乐标题、歌手、专辑、歌词和封面等信息,让曲库更整洁统一。
- 界面自定义:支持自定义界面主题,封面/唱片绘制、玻璃背景等组件在手机、桌面与车机之间共用。
- 多端适配:Android TV 拥有独立的页面、导航与焦点管理;车机提供横竖屏布局;桌面端提供侧栏导航与迷你/完整播放器。支持投屏设备发现与 DLNA/UPnP 相关能力。



安装与使用
编译环境:Gradle Wrapper 9.6.0、AGP 9.4.1、Kotlin/Compose Compiler 2.4.21、KSP 2.3.12 和 JDK 21;SDK 配置为 compileSdk 37、targetSdk 36、minSdk 23。
编译安卓 APP
macOS/Linux:
# 编译 debug 版本
./gradlew :androidApp:assembleDebug
# 编译 release 版本
./gradlew :androidApp:assembleRelease
Windows:
.\gradlew.bat :androidApp:assembleDebug
.\gradlew.bat :androidApp:assembleRelease
直接运行 Desktop(JVM)应用
macOS/Linux:
./gradlew :composeApp:run
Windows:
.\gradlew.bat :composeApp:run
打包当前系统的独立安装包
在某个系统上运行,就会打出对应系统的安装包:
./gradlew :composeApp:packageDistributionForCurrentOS
可简写为 ./gradlew :composeApp:package,产物路径为 composeApp/build/compose/binaries/main/。
运行测试
完整单元测试运行 ./gradlew fullTest(Windows 使用 .\gradlew.bat fullTest),覆盖 JVM、Android-KMP host 与普通 Android Debug/Release 测试,结果位于 build/reports/fullTest/。
注意事项
- LynMusic 以 GNU General Public License version 3 or later(GPL-3.0-or-later)分发,完整文本见仓库中的
LICENSE。 - 项目包含第三方 DLNA/UPnP 组件 Platinum UPnP SDK,该组件使用 GPL-2.0-or-later / commercial 双许可;由于完整应用包含该 GPL 组件,发布完整源码或二进制产物时需遵守 GPL-3.0-or-later 的条款,第三方组件说明见
THIRD_PARTY_LICENSES.md。 - 代码按模块划分:
shared:*、player:core承载共享数据与业务,ui:common为基础组件,ui:mobile、ui:desktop、ui:automotive、tvApp分别为各端页面,androidApp、composeApp、automotiveApp为各平台启动与打包入口;页面模块之间互不依赖,可通过./gradlew verifyUiModuleBoundaries校验模块边界。
本作品整理自 GitHub 开源项目 wesley666/LynMusic,原作者 @wesley666。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v1.1.3当前版本
新增歌词样式调节,优化飞牛音乐文件夹功能,并修复若干 bug。
评论