Skip to content

fix(Android播放): 切换原生播放器并修复通知栏与原生库打包问题#1

Open
BB0813 wants to merge 2 commits intoSPlayer-Dev:devfrom
BB0813:Master
Open

fix(Android播放): 切换原生播放器并修复通知栏与原生库打包问题#1
BB0813 wants to merge 2 commits intoSPlayer-Dev:devfrom
BB0813:Master

Conversation

@BB0813
Copy link
Copy Markdown

@BB0813 BB0813 commented Apr 22, 2026

变更类型

  • fix — Bug 修复
  • refactor — 重构,不改变外部行为
  • chore — 构建 / 脚本 / 依赖

变更说明

本次改动将 Android 环境下的默认音频播放实现从 HTMLAudioElement 切换为 AndroidNativeAudioPlayer,并围绕原生播放链路补齐了一系列兼容与稳定性修复,确保应用能够正常构建、启动并完成核心播放流程。

主要包括以下内容:

  1. Android 播放引擎切换
    AudioManager 在 Android 环境下的默认引擎切换为 AndroidNativeAudioPlayer,使播放、通知栏控制、原生 MediaSession 与 ExoPlayer 链路保持一致。

  2. 修复 Android 启动闪退
    排查并修复了 nodejs-mobile 相关原生库未正确打包的问题。补充了 jniLibs 源目录配置,关闭了会导致 libnode.so 丢失的 ABI 拆分打包,并增加构建前清理逻辑,避免 libnode.so.gz 干扰 JNI 合并,最终解决应用启动即崩溃的问题。

  3. 修复拖动进度条后异常恢复播放
    AndroidNativeAudioPlayer 中补充 seek 状态保护,避免原生 seek 回调将暂停状态错误恢复为播放状态,修复拖动进度条后音乐重新播放的问题。

  4. 修复系统通知栏切歌后元数据落后一首
    调整 Android 原生通知栏与 MediaSession 元数据同步时机,在切歌时更早推送最新歌曲元数据,并将新的 MediaMetadata 回写到当前 MediaItem,修复通知栏标题、歌手、封面落后一首的问题。

  5. 保留 HarmonyOS Connect 兼容基础代码
    虽然当前不再继续针对 HarmonyOS Connect 的进度条问题深挖,但本次已保留通知文本进度显示与 MediaMetadata.durationMs 的兼容代码,便于后续继续适配。

  6. 构建链路兼容性修复
    为适配当前 Android 构建环境,调整了 Gradle / AGP / JDK 相关配置,并修复了 nodejs-mobile-cordova 在新构建链路下的兼容问题,保证调试 APK 可稳定产出。

关联 Issue

无关联Issue

影响范围

  • 播放引擎 / 音频
  • 通知栏 / MediaSession
  • 内置 API (nodejs-mobile)
  • 构建 / 打包 / 签名
  • Capacitor / 原生 Android 代码

自检清单

  • 本 PR 目标分支为 master
  • 本地已执行 pnpm lint 且无 warning
  • 本地已执行 pnpm typecheck 且无报错
  • 已在至少一台真机上构建并验证关键路径
  • UI 改动已兼顾 手机竖屏 + 平板横屏 两种布局
  • 新增 / 修改的文案使用中文,与项目整体风格一致
  • 未引入不必要的依赖 / 大体积资源
  • 未修改签名密钥 / CI Secrets 相关文件

截图 / 录屏 (UI 类 PR 必填)

改动前 改动后
Android 环境使用 HTMLAudioElement,通知栏元数据不同步,启动存在原生库打包问题 Android 环境默认使用原生播放器,应用可正常启动,通知栏切歌元数据同步正常

测试方式

  1. 在 Android 环境执行调试构建并安装 APK,确认应用可以正常启动,不再因 libnode.so 缺失崩溃。
  2. 打开应用播放歌曲,拖动进度条,确认不会因为 seek 导致暂停状态被错误恢复为播放。
  3. 使用系统通知栏执行切歌操作,确认标题、歌手、封面会同步到当前歌曲,不再落后一首。
  4. 在 Android 环境下验证默认播放链路,确认当前实际使用的是 AndroidNativeAudioPlayer
  5. 验证 pnpm lint 可通过,确认本次修改未引入新的 Lint 问题。

其他说明 (选填)

  • 本次改动同时包含 Android 播放链路切换与原生打包稳定性修复,涉及 Web 层、Capacitor 插件层、Android 原生播放层三部分。
  • HarmonyOS Connect 的通知进度条显示问题目前仅保留基础兼容代码,尚未确认最终系统展示行为,后续如需继续适配可基于本次保留代码继续推进。
  • 由于本次问题主要集中在 Android 原生链路,未覆盖桌面端与非 Android 平台的行为回归。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant