Apple Music 的 Android 增强模块,专注于播放器布局、歌词体验、歌词内容和字体显示。
目录
AM++ 是一个通过 libxposed API 102 注入 Apple Music 的增强模块,目标包名为 com.apple.android.music。它不替换播放器本身,而是在保留 Apple Music 原有播放流程的基础上,补充平板双栏播放器、双向歌词模糊、自定义歌词注入、歌词字体替换和手机液态玻璃等体验增强。
模块同时提供独立的设置页。设置由 Xposed 框架的 remote preferences 管理;字体和自定义歌词正文使用 remote file 保存,并由 Apple Music 注入进程读取。
| 功能 | 默认状态 | 生效范围与说明 |
|---|---|---|
| 平板双栏播放器 | 开启 | Apple Music 官方判定为平板且横屏时,左侧显示播放器,右侧显示实时歌词。 |
| 平板禁用动态视频 | 开启 | 仅抑制平板横屏下的 Editorial Video,静态预览和普通 Music Video 不受影响。 |
| 双向歌词模糊 | 开启 | 当前高亮歌词保持清晰,历史歌词和后续歌词按距离逐渐模糊;手动滚动停止约 1 秒后恢复。 |
| 歌词模糊半径调节 | 0px |
可在设置中对模糊半径增加或减少 -10..10px。 |
| 自定义歌词注入 | 关闭 | 按 Apple Music ID 替换 TTML,支持手动 TTML、AMLL 和网易云逐字歌词导入。 |
| 歌词字体替换 | 关闭 | 导入 TTF/OTF 后应用到播放器歌词布局,可恢复原字体;示例使用 MiSans。 |
| 手机液态玻璃 | 关闭 | 手机底栏和 mini-player 的实时模糊、半透明材质与选中胶囊,目前为 WIP。 |
| 平板底栏补偿 | 关闭 | 平板底栏显示异常时使用的兼容性选项。 |
| 隐藏启动器图标 | 显示 | 隐藏后可从 LSPosed 的模块详情重新打开设置页。 |
双向歌词模糊的核心逻辑移植并适配自 a23bc/amlyricblur。
自定义歌词按 Apple Music ID 与歌曲绑定。播放过程中不会自动联网识歌;网络导入只会在设置页中由用户主动点击触发。
导入字体后,播放器歌词中的文字会使用选定字体,同时保留 Apple Music 的字号和样式。下图为 MiSans 替换前后效果。
Warning
这玩意纯纯半成品,bug多得离谱,截个图还是ok的。
| 项目 | 当前支持 |
|---|---|
| Android | Android 8.0(API 26)及以上 |
| Xposed 框架 | 支持 libxposed API 102、remote preferences 和 remote file 的实现 |
| Apple Music | 6.5.0 (1580)、6.5.1 (1583) |
| 双向歌词模糊 | Android 12(API 31)及以上 |
- Apple Music 的内部类、方法和资源会随版本混淆或调整,未列出的版本不保证兼容。
- 目标版本通过精确 profile 和结构契约定位,升级 Apple Music 后可能需要重新适配。
- 功能开关不会热卸载当前 Apple Music 进程中已经安装的 Hook;修改后需要强制停止并重新打开 Apple Music。
- 自定义 TTML 文件大小上限为 512 KiB,字体文件大小上限为 16 MiB。
- 手机液态玻璃仍处于 WIP 阶段。
- 已安装 Apple Music。
- 已安装支持 libxposed API 102 的 Xposed 框架。判断兼容性时以框架核心报告的 API 版本为准,不要只看 Manager 应用版本。
- 设备运行 Android 8.0 或更高版本。
- 从 Releases 下载 AM++ APK 并安装。
- 在 LSPosed 或兼容的 Xposed 管理器中启用 AM++。
- 仅将 Apple Music(
com.apple.android.music)加入作用域。 - 强制停止并重新打开 Apple Music。
- 打开 AM++ 设置页,确认状态显示已连接 libxposed API 102 后再修改需要 remote preferences 或 remote file 的设置。
Apple Music 功能修改后都需要重新打开目标应用。隐藏启动器图标只影响 AM++ 的桌面入口,不影响 Apple Music Hook。
在设置页开启“双向歌词模糊”即可。当前高亮行保持清晰,当前行之前和之后的歌词都会随距离增加而变模糊。手动浏览歌词时,模糊会暂时移除;滚动稳定约 1 秒后,会恢复当前高亮位置对应的模糊效果。
“歌词模糊半径”可以用于微调强度,范围为 -10..10px。该功能需要 Android 12 或更高版本。
- 进入设置页的“自定义歌词”。
- 点击“获取 ID”,从当前正在 Apple Music 播放的歌曲读取 Apple Music ID、标题和艺术家;也可以手动填写 ID。
- 选择一种歌词来源:粘贴或导入本地 TTML、按 Apple Music ID 从 AMLL 导入,或输入网易云歌曲 ID 导入逐字 YRC 歌词。
- 保存映射并启用对应歌曲。
- 强制停止并重新打开 Apple Music,使替换生效。
自定义歌词支持编辑、删除和按名称或 Apple Music ID 搜索。歌词正文会在写入和注入前进行大小、结构和哈希校验,无法通过校验时会保留 Apple Music 原歌词。
自定义歌词还支持 ZIP 备份与恢复。恢复时可以选择覆盖冲突歌词,或保留当前版本。
AMLL 和网易云导入属于用户主动操作,可能需要网络连接;模块不会在播放过程中自动请求歌词服务。
- 在设置页的“歌词字体”中选择 TTF 或 OTF 文件。
- 等待字体导入完成。
- 强制停止并重新打开 Apple Music。
- 如需恢复,点击“恢复原字体”并重新打开 Apple Music。
字体只覆盖播放器歌词,不修改系统字体或 AM++ 设置页字体。MiSans 替换效果见上方演示图。
在设置页开启“手机液态玻璃底栏”后重新打开 Apple Music。该功能只在手机路径启用,会修改底部导航栏和 mini-player 的背景材质与选中状态动画,目前仍可能出现视觉闪烁。
在设置页开启“隐藏启动器图标”即可移除桌面入口。隐藏后,从 LSPosed 的 AM++ 模块详情进入设置页。
- Kotlin,项目主要实现语言。
- Android Gradle Plugin,用于 Android 应用构建。
- libxposed API / service,用于模块加载、Hook 和跨进程配置文件服务。
- BlurView,用于手机液态玻璃的背景模糊。
- JDK 17
- Android SDK 37
- Android Build Tools 37.0.0
- 项目自带 Gradle Wrapper
Windows:
.\gradlew.bat test lintVitalRelease assembleReleaseLinux 或 macOS:
chmod +x gradlew
./gradlew test lintVitalRelease assembleRelease生成的 Release APK 位于:
app/build/outputs/apk/release/app-release.apk
本地生成正式 Release APK 需要签名配置。首次构建时,将 keystore.properties.example 复制为被 Git 忽略的 keystore.properties,并填写 keystore 路径、密码与别名。未提供签名配置时仍可构建 Debug APK,但不能生成可发布的正式签名产物。
app/src/main/java/ 模块入口、设置页、配置、歌词和功能实现
app/src/main/resources/ libxposed 模块元数据
app/src/test/ JVM 单元测试与结构回归测试
docs/images/ 项目演示图
docs/adr/ 架构决策记录
docs/apple-music-target-adaptation.md Apple Music 版本适配手册
scripts/ 可选的真机回归与录屏分析脚本
scripts/ 中的设备脚本需要 ADB;部分液态玻璃录屏检查还需要 root、Python、OpenCV,并针对参考设备的分辨率和坐标编写。运行前通过 -Serial、-Device 或 ANDROID_SERIAL 指定设备。
- 平板横屏双栏播放器
- 双向歌词模糊
- 自定义歌词注入与备份恢复
- 歌词字体导入与恢复
- 完善手机液态玻璃的冷启动和播放器收回稳定性
- 持续适配后续 Apple Music 版本
欢迎提交 Issue 和 Pull Request。
提交涉及代码的 PR 前,请至少运行:
test
lintVitalRelease
assembleRelease
涉及界面行为时,请在 Issue 或 PR 中附上设备型号、Android 版本、Apple Music 版本以及截图或录屏。适配 Apple Music 新版本时,请先阅读 Apple Music 新版本适配手册。
- 模块声明了
INTERNET权限,仅用于设置页中用户主动触发的 AMLL 或网易云歌词导入。 - 模块不会在播放过程中自动联网识别歌曲或请求歌词。
- 模块不申请存储或通知运行时权限;本地文件通过 Android 文件选择器读取。
- Apple Music 功能设置保存在 Xposed 框架管理的 remote preferences 中,歌词和字体文件保存在框架提供的 remote file 中。
- 模块不包含分析服务。启动器图标状态由 Android PackageManager 本地保存。
本项目以 MIT License 开源。第三方代码与依赖仍分别遵循其原始许可,详见 THIRD_PARTY_NOTICES.md。
- AMLyricBlur:双向歌词模糊核心的移植来源。
(返回顶部)





