Skip to content

v4.5.4

Latest

Choose a tag to compare

@Andrea-lyz Andrea-lyz released this 10 Nov 04:39

ColorOS Live Lyrics Bridge v4.5.4

v4.5.4 是锁屏歌词行位与网易云显示歌词的修复版本,处理两类会让歌词“少一句、错一行”的问题:方括号开头的歌词被系统原生解析吞掉,以及网易云 9.6.20 的官方显示歌词尾部乱序。Bridge 与网易云音乐 Provider 有代码变化,其余 13 个歌词 Provider 与动态封面 Provider 1.0.6 的代码和内部版本不变,套件资产文件名更新到 4.5.4。

锁屏歌词

  • 修复某些歌词以方括号开头时(例如 [so simple and clean])整行不进入系统原生歌词列表的问题。ColorOS 解析器会把紧接时间标签的 [...] 当作标签继续消费;Bridge 现在在时间标签与这类正文之间写入一个不可见分隔符,原生扫描在此停止。可见文字、逐字时间、翻译、行数与滚动都不变,重复处理也不会累积字符。
  • 该问题会让后续每一句在原列表与 Bridge 模型中相差一行,表现为某句开始失去实时高光、随后当前行持续偏移到歌词区上边界;修复后行位、高亮与滚动恢复一致。
  • 行测量、文字匹配与自绘改为使用已提交的原生行绑定身份,而不是可能仍挂着上一行的可变 TextView 文本;被回收、旧事务或布局不支持的绑定不再提供绘制内容。
  • 开头“标题/歌手”复用行现在只对已记录的槽位和确切文字生效,普通歌词不会再被误认为标题而选中前一行。

网易云音乐 Provider(1.2.2)

  • 网易云 9.6.20 可能在官方显示歌词尾部给出乱序行,或包含超出曲目时长的占位行。系统按列表顺序渲染并按索引映射,一行错位就会让后面所有槽位偏移,出现保留空白行。
  • Provider 现在会在宿主时间轴非递增、存在超出已知时长的行,或行数明显少于解码结果时,回退到解码后的有序时间轴;编码前统一排序,保证显示、逐字与翻译三条数据不会互相错序。
  • 验证宿主补充网易云 9.6.20。

兼容矩阵与升级

Bridge 继续只作用于 system 和 com.android.systemui,不进入播放器进程,也不依赖 Provider 安装。Provider 仍通过播放器自己的 MediaSession MediaMetadata["lyricInfo"] 发布歌词。

Provider 版本 Provider 版本
Salt 1.1.2 (8) Cone 1.1.2 (4)
KuWo 1.2.2 (5) LX 1.2.1 (4)
Poweramp 1.2.1 (4) Metrolist 1.2.1 (4)
酷狗 1.2.4 (7) QQ 音乐 1.2.1 (4)
网易云 1.2.2 (5) Apple Music 1.2.1 (4)
Spotify 1.1.2 (4) 汽水音乐 1.1.2 (4)
通用播放器 1.1.2 (4) Readify 1.0.2 (3)
动态封面(独立应用) 1.0.6 (10)
  1. 可直接覆盖安装 Bridge 4.5.4;Bridge 作用域保持 system 与 com.android.systemui。
  2. 歌词 Provider 中只有网易云音乐需要更新到 1.2.2;其余模块内部版本与 4.5.3 相同,本 Release 中的文件名改为 v4.5.4。
  3. 同一播放器只开一个 Provider:专属 Provider 与通用播放器 Provider 二选一,同时开启会互相覆盖 lyricInfo。
  4. Debug 签名测试包不能覆盖正式签名包,需要先卸载。从 4.0 或更早版本升级前,仍建议在 Bridge 中完成配置备份。

验证与已知限制

  • Bridge 本地门禁:876 项单元测试中 870 项通过、6 项既有外部样例条件测试跳过、0 失败/错误;assembleDebug 成功,git diff --check 通过。新增 4 项行为回归在修复前全部失败,修复后通过。
  • Provider 本地门禁:受影响模块 :player-netease 10 项单元测试全部通过,含 3 项新增显示歌词校验用例。
  • 用户已在设备确认修复后的测试包:全部歌词正常显示、同步正确,实时行不再偏移;日志 logs/lyrics-log-20261110-045844.txt。该结论对应测试构建,不替代正式签名 RC 的设备验收。
  • 兼容性仍取决于厂商 SystemUI 版本和播放器通过 MediaSession 提供的歌词、翻译与进度数据。没有逐字标签的歌词只会使用逐行进度。

资产

正式 Release 包含 19 项已验证资产:1 个 Bridge APK、14 个歌词 Provider APK、1 个动态封面 Provider APK、1 个歌词 Provider ZIP、release-assets-v4.5.4.json 和 SHA256SUMS。Provider ZIP 只包含 14 个顶层歌词 Provider APK;动态封面 Provider 作为独立资产提供。

致谢

感谢提供复现曲目、逐步二分日志并完成设备复测的用户。


English

v4.5.4 fixes lyric-row alignment and NetEase display lyrics. It addresses two defects that could drop or shift a line: bracket-prefixed lyrics being consumed by the vendor's native parser, and an out-of-order tail in NetEase 9.6.20's official display lyric. Bridge and the NetEase Provider change; the other 13 lyric Providers and Dynamic Artwork Provider 1.0.6 keep their code and internal versions, and suite asset file names move to 4.5.4.

Lock-screen lyrics

  • A lyric beginning with a bracket, such as [so simple and clean], no longer disappears from the system's native lyric list. ColorOS keeps consuming consecutive [...] groups after the time tag; Bridge now writes an invisible separator between the time tag and such text so the native scan stops there. Visible text, word timing, translations, row count, and scrolling are unchanged, and repeated normalization does not accumulate characters.
  • That defect made every later line differ by one between the native list and the Bridge model: a line first lost its live highlight, then the live row drifted to the top edge of the lyric area. Row identity, highlight, and scrolling now stay aligned.
  • Measurement, text matching, and custom drawing use the committed native row binding instead of a mutable TextView string that may still carry another row. Recycled, stale-epoch, or unsupported bindings no longer supply drawable content.
  • The opening title/artist slot reuse now applies only to its recorded slot and exact text, so ordinary lyrics cannot impersonate a title and select the previous line.

NetEase Provider (1.2.2)

  • NetEase 9.6.20 can publish a display lyric whose tail is out of order or that contains a placeholder past the track duration. The system renders rows in list order and maps them by index, so one stray row shifts every later slot and leaves reserved blank rows.
  • The Provider now falls back to the decoded ordered timeline when the host timeline is not increasing, contains rows past the known duration, or is materially shorter than the decoded set. All lanes are sorted before encoding, so display, word-timing, and translation data cannot disagree.
  • NetEase 9.6.20 is added to the validated hosts.

Compatibility and upgrade

Bridge still runs only in system and com.android.systemui. It does not enter player processes or depend on a Provider being installed. Providers continue to publish through the player's own MediaSession MediaMetadata["lyricInfo"].

Provider Version Provider Version
Salt 1.1.2 (8) Cone 1.1.2 (4)
KuWo 1.2.2 (5) LX 1.2.1 (4)
Poweramp 1.2.1 (4) Metrolist 1.2.1 (4)
KuGou 1.2.4 (7) QQ Music 1.2.1 (4)
NetEase 1.2.2 (5) Apple Music 1.2.1 (4)
Spotify 1.1.2 (4) QiShui 1.1.2 (4)
Universal 1.1.2 (4) Readify 1.0.2 (3)
Dynamic Artwork (standalone app) 1.0.6 (10)
  1. Install Bridge 4.5.4 over the previous release. Keep its scope at system and com.android.systemui.
  2. Only the NetEase Provider needs to move to 1.2.2; the other modules keep their 4.5.3 internal versions, and files in this Release are named v4.5.4.
  3. Enable one Provider per player. A dedicated Provider and the Universal Provider overwrite each other's lyricInfo when both are on.
  4. A debug-signed build cannot replace a release-signed install; uninstall it first. A configuration backup is still recommended before upgrading from 4.0 or older.

Verification and limits

  • Local Bridge gates passed: 870 of 876 unit tests passed, 6 existing external-fixture conditional tests skipped, 0 failures or errors; assembleDebug succeeded and git diff --check passed. The four new behavior regressions failed before the fix and pass after it.
  • Local Provider gates passed: all 10 unit tests in the affected :player-netease module, including three new display-lyric cases.
  • The user confirmed the fixed test build on device: every lyric displays correctly, stays in sync, and the live row no longer drifts. Log logs/lyrics-log-20261110-045844.txt. This acceptance covers the test build, not the formal signed RC.
  • Compatibility still depends on the vendor SystemUI build and on the lyrics, translations, and position data exposed by each player through MediaSession. Lyrics without word tags use line progress only.

Assets

The formal Release contains 19 verified assets: one Bridge APK, 14 lyric Provider APKs, one Dynamic Artwork Provider APK, one lyric Provider ZIP, release-assets-v4.5.4.json, and SHA256SUMS. The Provider ZIP contains only the 14 top-level lyric Provider APKs; the Dynamic Artwork Provider is a separate asset.

Thanks

Thanks to the user who provided the reproduction track, staged binary-search logs, and device acceptance.

Donate

WeChat and Alipay donation QR code