HDR 歌词与朋友圈链接分享
HDR 歌词
入口:澜音模块设置 → 歌词效果 → HDR 歌词显示。开启后强制停止并重开 Apple Music。
- 亮度比例为 100%–800%,默认 200%。这是相对 SDR 的目标亮度,不是面板实测尼特值。
- 震爆弹模式一键开启 HDR 功能、请求最高窗口亮度和系统可用 HDR 余量。实际输出仍由屏幕、自动亮度、节电与温控策略决定,不能保证强制触发厂商 HBM。
- 只有歌词页面可见且持有窗口焦点时接管亮度;暂停页面、切后台、打开其他窗口或关闭功能后恢复此前窗口设置。
- 真正的 HDR 字形需要 Android 14+、HDR 屏幕及硬件加速。旧设备保留普通歌词;震爆弹只能请求普通最高窗口亮度。
实现使用 Android Gainmap 为原生字形绘制添加相对亮度元数据,保留原文布局、声部和外层模糊。绘制限定在已验证歌词 RecyclerView 中的文字,复用有内存上限的位图。需要 GPU Canvas 的不兼容字形回退原生绘制。不会改系统全局亮度设置。
朋友圈:网易云音乐跳板,保留可点击链接
禁止 Hook 微信。 此版本完全移除微信桥接模块,入口同时拒绝微信主进程和子进程,即使 LSPosed 仍保留旧版作用域选择也不会在那里安装 Hook。
分享路径为 Apple Music → 澜音确认链接 → 网易云原生分享面板 → 朋友圈。采用网易云网页资源类型,不替换成网易云歌曲,不生成图片或二维码替代链接,不伪造开放平台身份,也不自动选择目标或发布。
开启与使用
- 覆盖安装新版,在 LSPosed 取消微信,只为本功能勾选 Apple Music 和 网易云音乐。
- 若之前加载过旧版微信桥接,强制停止并重开微信一次以移除旧进程中的代码。新版本不会注入微信。
- 强制停止并重开 Apple Music 和网易云音乐。在澜音 界面与底栏 → 微信朋友圈分享 开启入口。
- 从 Apple Music 分享歌曲链接;如先出现内置目标列表,选择 更多/其他 进入系统分享面板。
- 选择 分享到朋友圈(歌曲链接),核对 URL 后点击 打开网易云分享面板,再由用户选择朋友圈并确认发布。
只有含有效 https://music.apple.com/… 的分享才添加入口,保留地区、路径和查询参数。图片分享不会冒充链接分享。分享来源可能显示网易云音乐,因为使用的是其本来的分享流程;链接目标仍为 Apple Music,并非微信内直接播放完整歌曲。
版本证据与实现
已核验以下原签名 Android 包的真实代码,运行时同时核对版本、签名和完整方法类型:
| 网易云版本 | versionCode | 原生网页分享入口 |
|---|---|---|
| 9.5.81 | 9005081 | SharePanelActivity.Lb(Context,int,Serializable,Serializable) |
| 9.6.22 | 9006022 | SharePanelActivity.Rb(Context,int,Serializable,Serializable) |
原生 GeneralResource 使用 setTitle、setSubTitle、setContent、setHeaderTitle、setWebUrl、setCover 设置元数据;原生 helper 接收 res_type=19,最终由网易云自身构造 WXWebpageObject 并调用自己的 SDK。模块没有直接调用微信内部页面或修改 SDK。
签名证书 SHA-256:54254d2be09daef48dedc2b4a4f497d153e14ed9d70814fc9c360ee9240827f7。
9.5.81 分析样本 SHA-256:76f60f20c8905786efc9d242271a7858aaa2a9f334030f09da29b7f79994c79e(百度手机助手原签名安装包)。9.6.22 对照样本:b36f51eccbf0dd46956afa5f6f3f41db6e1ce5dc136385d93b69f0b3fadc3d34(网易官网下载)。安装包与反编译源码不进入本仓库或发布附件。
host-netease 仅在网易云主进程注册受模块签名权限保护的接收器,且只接受 Apple Music 链接。用户点击后唤起网易云,从实际 Activity 的 onResume 接管前台页面并注册桥接,不依赖启动 Application 的生命周期回调;从该 Activity 的 ClassLoader 解析上述原生 helper。模块不读取网易云或微信的账号、聊天或数据库,也不替用户发布。
beta.9:外链封面
封面同样按分享 URL 的歌曲 ID 查询 Apple 公开元数据;原地区返回空或缺少封面时,再按同一歌曲 ID 查询美区元数据,绝不按歌名猜测或改写分享链接。已实测《WHITE NIGHT》(1725789953)中国区查询为空、美区返回对应封面。将经校验的 HTTPS Apple 图片 CDN 地址填入原生 setCover(已核验签名匹配的网易云 9.6.22)。查询进行中先等待结果,避免已有歌名时抢先发送无封面资源;查询失败时明确提示将无封面分享。模块不 Hook 微信。
本次复核样本为应用宝分发的网易云 9.6.22(9006022),APK SHA-256:a0040599d0522cfbd833cba52d521a4ed12bd4be8cfbaeffb4f9c0b2f2ad6bb7,证书与上文一致。res_type=19 分支从 GeneralResource.getCover() 读取图片 URL,原生分享最终将加载的位图写入 WXMediaMessage.thumbData。实体设备上的发送面板及朋友圈接收结果仍需验收。
beta.8:歌曲名称与歌手
Apple Music 6.5.2 的原生网页分享只传 URL,不提供 EXTRA_SUBJECT。beta.8 从已核验的当前歌曲状态补入歌名和歌手,且歌曲 ID 必须与链接匹配;专辑链接使用 ?i= 的曲目 ID,不能用专辑 ID 或专辑名。没有本机信息时,在澜音分享确认页通过 Apple 的公开 itunes.apple.com/lookup 按原链接地区、曲目 ID 查询;只有返回的 trackId 匹配时才接受,原始分享链接保持不变。
确认页可核对、修改歌名和歌手;异步查询不覆盖已有信息或用户编辑。查询失败时允许手动填写,歌名为空时不打开分享页。网易云的 GeneralResource 分别填入歌名、歌手和歌名页头,朋友圈沿用其原生“歌名 - 歌手”格式;没有歌手时仅显示歌名,不再回退成“Apple Music - Apple Music”。模块不 Hook 微信。
beta.6:已打开网易云但未出现分享面板
beta.5 只在启动 Application 上注册生命周期回调,无法兜住包装 Application 与实际前台 Activity 不一致的情况,并且原生函数返回就被当成成功。beta.6 改为跟踪实际 Activity,等到匹配原链接的原生 SharePanelActivity 恢复后再确认成功。没有真机日志,尚不能断言这就是每台设备上的故障原因。
同一次操作使用固定请求编号;等待面板期间的重复轮询不会再次调用分享函数。冷启动最多等待 30 秒,界面有等待状态;失败后返回澜音分享确认页可查看以下诊断,错误也会显示为系统文字提示。诊断仅包含固定状态与版本信息。
| 错误码 | 含义与处理 |
|---|---|
| N0 | 网易云未收到桥接请求。检查 LSPosed 澜音 → 作用域 → 网易云音乐 已勾选,并强行停止网易云后重开。不要勾选微信。 |
| N1 | 原生分享函数返回,但超时仍未检测到分享页;反馈错误码与网易云版本。 |
| N2 | 桥接已加载,但没有可用的前台 Activity;完成启动或登录页面后重试。 |
| N3 | 安装版本不在已核验的两个版本中;诊断显示实际 versionName/versionCode。 |
| N4 | 无效链接或请求编号。 |
| N5 | 安装包签名与已核验官方包不一致。 |
| N6 | 对应版本的原生模型或分享函数解析失败。 |
| N7 | 原生分享函数调用异常。 |
| N8 | 另一个链接尚在等待分享页,稍候重试。 |
验证边界
自动化覆盖原生模型构造、URL 保留、网页资源类型、原生 helper 调用、拒绝邻近未知版本及非 Apple 链接,以及 HDR 元数据、位图复用和亮度恢复。新增测试通过实际广播接收器覆盖漏接启动回调后的 Activity 接管、权限保护、重复请求去重、原生面板按原链接确认、暂停与超时,以及真实分享 Activity 的等待/成功/N0 提示。
真实屏幕 HDR 输出与网易云到微信的最终卡片展示仍需真机验证。版本、原签名或成员不匹配时明确提示,不能退回图片,也不能改用微信 Hook。