音源包热更新
在线取链逻辑以「音源包」形式下发。上游接口变了,装个新包就修好,不用等新版客户端。
轻听是一个 Android / Windows 双端的音乐应用。装上就能用:扫描音乐目录, 播放、歌词、收藏、下载、统计全部可用,这一部分全程不需要联网。
在线能力(搜索、歌单、排行榜、每日推荐、在线播放)是可选增强, 而且被设计成一层可插拔的东西——音源包。
音源包不是本项目的组成部分,它由使用者自行获取与安装, 取链逻辑(把一首歌变成一个可播放地址)全部封装在里面。这样设计带来三个直接好处:
没装音源包时应用依然完整,只是在线入口不出现。
这是轻听音源体系里最实用的一点。播放包内置一个 LX 自定义源脚本宿主: 只要是按 LX 自定义源协议写的脚本,无需改动即可装载,并在 Android 与 Windows 两端跑出同样的结果。
宿主为了跑通这些脚本做的事(都写在开源仓库里):
| 能力 | 说明 |
|---|---|
| 协议模拟 | 提供符合协议的 lx 对象(事件注册、请求回调、脚本自述)与 utils.crypto / utils.buffer 工具面 |
| 环境桩 | 脚本常见的 process / window 全局探测与定时器反调试被安全接住,不因环境差异崩掉 |
| 逐字节保全 | 混淆脚本体在构建流水线里被逐字节还原——打包器重打印语法树会破坏脚本自校验,导致解密轮转不收敛 |
| 挂死守卫 | 每条脚本在沙箱里实际执行一遍,看门狗盯住挂死,挂死即中止构建,坏脚本发不出去 |
一个播放包里可以并存多条线路:LX 脚本、平台官方接口、聚合脚本各有分工。 某条不通时自动换下一条,本档线路全灭时还会跨源兜底救回。
装上音源包后,搜索、歌单广场、排行榜、新歌速递、每日推荐、歌手页、专辑页、 逐字歌词全部打开。当前支持 网易云 / QQ 音乐 / 酷我 / 酷狗 / B 站 / 咪咕 六个源。
音源清单由包自己声明,客户端不内置任何白名单——包里加一行,该源立刻在两端可选、可搜、可播放。 每个源还会声明自己有没有排行榜 / 歌单 / 歌手页 / 专辑 / 新歌流这些能力面, 没有的入口自动隐藏,而不是给你一个空列表。
同歌多源:一首歌在多个平台有资源时,播放页可以直接切换。
| 层 | 机制 |
|---|---|
| 安装前 | 内容安全扫描:命中宿主桥 / 自由外联 / 后台执行体等红线直接拒绝,给出命中词与行号 |
| 安装时 | ed25519 签名:官方包内置公钥硬校验,改一个字节就装不上 |
| 运行时 | 能力收缴:包里只有 host.request 一个出口,fetch / XMLHttpRequest / WebSocket / Worker / 文件系统全是 undefined |
装完还会跑一次冒烟自检(真实歌曲取链 + Range 预检),不过就回滚, 不会把你卡在坏包上。
扫描本地目录即成曲库,支持 MP3 / FLAC / WAV / OGG / AAC / M4A。 播放队列、四种循环模式、歌词、下载、收藏、听歌统计全部内置。
Android 与 Windows 功能对齐,两端都是完整的应用,不是「某一端为主」。
代码托管在两个平台,内容一致、同步推送,挑访问更顺的那个即可。
| 仓库 | 平台 | 说明 | GitHub | CNB |
|---|---|---|---|---|
| qt-uniappx | Android / iOS | UniAppX(UVue + UTS)客户端,含音频内核、悬浮窗歌词、音源包引擎等原生插件 | 仓库 | 仓库 |
| qt-pc | Windows | Tauri 2 + React 19 + Rust 桌面端 | 仓库 | 仓库 |
| qt-sources | 平台无关 | 音源实现与打包流程,产物同时服务上面两端 | 仓库 | 仓库 |
仓库边界是清晰的:客户端仓库里没有任何第三方平台取链实现。 这不是疏忽,是刻意的设计边界。
欢迎提交 Issue 与 PR——见反馈与贡献,两个平台都收。
从 下载安装 拿到客户端,然后按 如何设置音源 装好音源包。 遇到问题先看 问题答疑。
三步走:装应用 → 设置音源 → 播放。
想写自己的音源包,直接读 音源包作者指南—— 包结构、宿主 API、平台模块契约、签名与打包流程都在里面。
如果你的脚本本来就是 LX 自定义源格式,通常可以直接装进来看效果。
想跑起来改代码,看 开发指南。三个仓库各有专页: qt-pc · qt-uniappx · qt-sources。
不用。扫描目录、播放、歌词、下载、收藏、统计全部离线可用。 在线能力来自音源包,装了才有、不装就没有,且随时可以卸载。
两个原因:
播放包里内置了一个 LX 自定义源脚本宿主,符合该协议的自定义源脚本无需改动即可装载, 并且同一份脚本在 Android 与 Windows 两端都能跑。脚本依旧跑在受管控的沙箱里, 只有宿主注入的网络通道可用。详见如何设置音源。
先去音源包管理页检查更新。绝大多数失效都是推个新包就修好。 若仍不行,看 问题答疑 的四步排查。
标准 128k / 高品 320k / 无损 FLAC 三档,播放与下载相互独立。 界面上只展示当前源真实支持的档位;客户端会优先选可用的高音质来源, 并按实测码率重标档位(只降不升),不虚标。
iOS 代码层面可编译但没有正式发布;鸿蒙暂未单独适配。
仅供学习与技术交流使用。本项目不存储、不分发任何音乐内容;音源包由使用者自行 获取并自担风险,请勿用于商业用途,并请尊重音乐版权。 「QQ 音乐」「网易云音乐」「酷我」「酷狗」「咪咕」等名称与商标归各自权利人所有, 本项目仅在描述兼容性时作合理引用,与上述平台无任何隶属或合作关系。
本应用通过换源机制从各平台公开接口取播放地址,数据并非官方授权、也不保证准确, 可能出现翻唱、Live、串曲或不同平台版本。这是这类工具的固有特性。
本站的构建与托管由 腾讯云 EdgeOne Pages 提供支持, 在此致谢。