大家好~今天想聊聊一个在 Android 音乐爱好者圈子里挺火的开源客户端——Metrolist。它的代码在 GitHub 上,你可以随意 clone、改造,甚至自己打包发布。看似是个技术玩意儿,但它真正的价值在于:把 YouTube Music 那些隐藏在 Google 官方 App 里的功能,搬到了一个轻量、可自定义的播放器里。下面,我会先把最近在 issue 区看到的“Cast Button not available”问题拆开聊一聊,然后再系统性地把 Metrolist 的安装、使用、常见坑、进阶技巧全部写进来,力求让每位读者都能把它玩转。
🔎 为什么会找不到投屏按钮?
在 GitHub Issue #2383 里,报错的朋友用了两台设备:LineageOS(LOS)和 Echo Show 第一代,结果在播放页面根本看不到投屏(Cast)图标。根本原因其实很简单——Metrolist 依赖 Android 系统提供的 MediaRouter 服务来发现 Chromecast / DLNA 设备。如果系统的投屏框架被禁用、或者设备的 Google Play Services 版本太老、再加上系统自带的投屏实现不完整,就会导致 UI 上根本不渲染按钮。
可以把它比作在家里找电视遥控器:如果遥控器电池没电,电视根本不会显示“切换信号源”的选项。同理,系统的投屏服务挂了,Metrolist 只能默默地把按钮藏起来。
几个常见的“投屏失灵”场景
- 系统定制 ROM(比如部分 LOS 版本)把
android.media.MediaRouter权限关闭。 - 设备没有预装 Google Play Services,导致
com.google.android.gms.cast.framework包缺失。 - 使用了自带的低配投屏实现(如部分 Echo Show),只支持 Alexa 投屏,不兼容 Chromecast 协议。
快速自救办法
- 打开系统设置 → 应用 → 权限,确保 媒体投射(或类似名称)已开启。
- 在 开发者选项里打开 强制开启媒体投射服务(部分 ROM 有此开关)。
- 如果仍然不行,用 Google Home 或 Chromecast 生态插件先让系统识别投屏设备,再回到 Metrolist 检查按钮是否出现。
- 最保底的办法是:在 设置 → 关于手机 → 连续点击版本号打开开发者模式,随后在 系统设置 → 投屏里手动添加设备。
🚀 Metrolist 基础安装与启动全攻略
下面把从 git clone 到真机跑起来的每一步都写清楚,像做菜一样一步步跟着来。
一、准备工作
- 装好 Android Studio Arctic Fox 以上(建议使用官方最新版)。
- JDK 17+(Android Studio 自带),确保
java -version能看到 17。 - Android SDK:API 24 起步,建议装到 API 34(系统最新)。
- Git 客户端,用来 clone 代码。
二、克隆仓库
git clone https://github.com/MetrolistGroup/Metrolist.git
cd Metrolist
如果网络慢,可以加上 --depth 1 只拉最新提交。
三、打开项目
打开 Android Studio,选 Open an Existing Project,指向刚刚的 Metrolist 文件夹。第一次打开会自动走 Gradle Sync,耐心等几分钟。
四、构建运行
有两种方式:
- IDE 直接点 “Run” 按钮,选择连接的真机或模拟器。
- 命令行构建:
./gradlew assembleDebug,生成的 apk 在app/build/outputs/apk/debug/app-debug.apk,手动安装。
五、首次启动注意事项
- 打开后会弹出“允许后台播放”“访问存储”等权限,全部点同意。
- 如果出现 YouTube Music 登录页面,直接使用谷歌账号登录即可。
- 若在国内无法直接访问 YouTube,可先配置 VPN 或使用 yt-dlp 代理。
🌈 Metrolist 日常使用小技巧
下面列了几条我和社区朋友们最常用的功能,帮助你把 Metrolist 用得更顺手。
1. 离线缓存,像把歌单装进口袋
在播放页面下拉出现的 “下载” 按钮,一键即可把歌曲缓存到本地。缓存默认保存在 /Android/data/com.metrolist/files,可以用文件管理器自行清理。
2. 播放列表分享——把好歌传给朋友
长按任意播放列表条目,会弹出分享选项。内部实现是把列表转成 Intent.ACTION_SEND 的文本格式,你可以直接发微信、QQ,甚至发邮件。
3. 动态主题切换
设置 → 外观 → 主题,支持浅色、深色、黑色以及跟随系统。对喜欢夜间刷歌的朋友,打开“黑色主题”能把 OLED 屏幕耗电降到最低。
4. 端到端歌词同步
打开设置 → 歌词,选择 LrcLib 源。Metrolist 会在播放时自动拉取同步歌词,配合 滚动字幕,单曲卡拉 OK 再也不是问题。
5. 与 Discord “Kizzy” 集成
如果你是游戏玩家,打开 Kizzy 开关,Metrolist 会把当前正在播放的歌曲实时显示在 Discord Rich Presence,旁边的朋友一眼就能看出你在听什么。
⚠️ 常见坑与解决办法
- 启动崩溃:检查
adb logcat是否报错ClassNotFoundException,大多数是因为未开启 Google Play Services 导致 InnerTube API 初始化失败。解决办法是手动安装 Google Play Services,或者在gradle.properties中把useGoogleApis=false(实验性)打开。 - 播放卡顿:在低配机型(如 2GB RAM)上,建议在设置 → 高级 → “使用 ExoPlayer 低功耗模式”。
- 搜索不到歌曲:检查 YouTube Music 区域是否被q,若是请使用 V屁恩 + DNS over HTTPS。
- 投屏按钮消失:参考上文 Issue #2383 的排查步骤,确保系统投屏服务可用。
📚 小结与展望
Metrolist 之所以受欢迎,关键在于它把“酷炫的 UI + 强大的功能”浓缩进一个轻量的 APK,而且开源透明,想改哪儿改哪儿。通过本文,你已经能完成从代码拉取、环境搭建、基本使用到进阶功能的全链路。如果你对 Android 开发有一点点好奇,甚至想把它二次开发为自己的私有音乐播放器,完全可以在 app/src/main/kotlin 目录里动手实验。
最后提醒一句,开源社区的力量在于大家一起发现问题、提 PR、写文档。看到投屏按钮不见的 bug,别只抱怨,去 issue 区贴日志、提交复现步骤,甚至直接提交代码修补——这才是对“开源精神”的最佳致敬。
祝大家玩得开心,音乐常伴! 🎧💡
评论 (0)