Metrolist
开源 Android 版 YouTube Music,歌词/识曲/Discord联动全搞定
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源 Android 版 YouTube Music,歌词/识曲/Discord联动全搞定
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Metrolist 应用图标
![]()
你有没有过这样的经历——想在手机上听一首歌,却发现 YouTube Music 的官方 App 塞满了各种你不想要的订阅服务,而且界面越来越复杂。Metrolist 就是来解决这个问题的。它是一个完全开源的 YouTube Music 第三方客户端,专为 Android 设计,去掉了所有繁杂的商业元素,只留下听音乐最核心的体验。
Metrolist 诞生于 2023 年 8 月,作者 mostafaalagamy 的动机很简单:YouTube Music 的官方 App 功能过于臃肿,而且缺乏足够的自定义空间。对于喜欢开源软件的极客用户来说,官方 App 是一个「黑箱」——你无法知道它收集了什么数据,也无法自由地配置界面和行为。Metrolist 的出现正好填补了这个空白,它基于 YouTube Music 的非官方 API(Innertube API),为用户提供了完全本地化、透明可控的音乐播放体验。
Metrolist 不只是一个「换皮」的 YouTube Music,它在多个维度上做了深度优化:
多源歌词整合:项目内置了 BetterLyrics、LRCLib、SyncedLyrics 等多个歌词源,能自动从这些平台抓取精确的时间轴歌词(lrc格式)。更有意思的是,它还集成了 ShazamKit——如果你不知道正在播放的歌叫什么,按一下 Shazam,它能「听歌识曲」告诉你答案。
跨平台歌词服务:项目还接入了 Last.fm(音乐社交平台,记录你的听歌历史并自动「scrobble」到个人主页)和 KouGou(酷狗歌词库,中国用户特别友好)。
本地化与国际化:Metrolist 通过 Crowdin 平台支持 20+ 种语言翻译,社区贡献者持续完善各语言版本。用户还可以更换应用图标,有多个变体可选。
Discord 联动:内置 Discord Rich Presence,玩家的听歌状态会实时显示在 Discord 个人资料中——好友可以看到你在听什么歌,甚至可以直接点击跳转到歌曲页面。
Metrolist 在技术选型上紧跟 2024 年的 Android 开发主流趋势:
编程语言:纯 Kotlin 开发,充分利用 Kotlin 的空安全特性和协程支持。
UI 框架:Jetpack Compose(现代声明式 UI)+ Material Design 3。这意味着界面渲染性能更高,主题切换(深色/浅色模式)实现更简洁,而且整个 UI 代码都受到 Gradle KSP 编译时检查的保护。
依赖注入:Hilt,Google 官方推荐的 Android DI 框架。
模块化架构:项目包含 9 个独立 Gradle 模块:
app:主应用模块innertube:YouTube Music 非官方 API 封装(核心网络层)betterlyrics、lrclib、shazamkit、lastfm、kugou:各歌词/识别服务的独立封装discordrpc:Discord Rich Presence 模块paxsenix、metroproto:工具/协议模块这种高度模块化的设计让每个功能都可以独立测试和复用,同时也方便社区贡献者只关注某一个具体模块。
Protobuf 数据序列化:innertube 模块使用 Protocol Buffers 作为数据序列化格式,相比 JSON 更高效、更类型安全。构建时需要先运行 generate_proto.sh 生成代码。
最低 SDK 版本:Android 6.0(API 23),覆盖了绝大多数仍在使用的 Android 设备。
图2-4:应用截图

对于普通用户来说,Metrolist 的上手门槛比官方 App 稍高——需要额外配置 Google 账号(通过 YouTube Music 的方式登录),且部分功能(如 ShazamKit)需要 Google Play 服务。不过,核心的听歌、搜索、推荐功能是完全可用的。
对于技术用户来说,Metrolist 的价值在于透明和可控:你可以查看它的所有源代码,了解它如何与 YouTube 服务器通信;可以自行编译 APK,添加或修改任何你想要的功能;可以通过 GitHub Issues 和 Discord 与开发者直接沟通。
Metrolist 依赖 YouTube Music 的非官方 API,存在被 Google 封锁的风险(YouTube Music 在部分区域有版权限制,需使用 VPN 才能正常使用)。此外,由于使用了大量 Google 生态的库(如 Hilt、protobuf),对于非 Android 平台的支持短期内不太可能实现。
Metrolist 代表了一种趋势:在「大厂 App 越来越臃肿」的背景下,开源社区通过逆向工程 API 的方式,为用户提供轻量、透明、可定制的替代方案。这种模式在音乐流媒体领域尤为重要——用户对音乐数据的控制权(播放历史、歌词、个性化推荐)正在变得越来越重要。Metrolist 以超过 9,700 GitHub Stars 的成绩证明了这一需求的真实存在。