Skip to content

MusicPlayer v2.22.18 (code 59)

Choose a tag to compare

@HelloEarth520 HelloEarth520 released this 18 Sep 13:19
· 4 commits to main since this release

MusicPlayer v2.22.18

  • 版本号:versionName 2.22.18 / versionCode 59
  • 日期:2026-09-10
  • 本版主题:移除 INTERNET 权限——系统级保证纯本地播放、零联网

需求背景

已厘清 INTERNET 权限的来源:Capacitor 默认设计是联网加载页面(支持 server.url
远程加载 / live-reload 热更新),模板无条件带入 android.permission.INTERNET——
与本应用 JS 是否发请求无关(权限是静态清单声明,不看运行时行为)。

核实结论(本版动前的勘察):

  1. 权限声明在 android/app/src/main/AndroidManifest.xml(cap add android 一次性拷入,
    cap sync 不重写);
  2. capacitor.config.ts 未配 server.url,页面经 WebView 进程内 scheme 拦截
    (https://localhost / _capacitor_file_)加载,不出网卡;
  3. grep 全量 www/ JS:仅有的 fetch 全是本地 URL(音轨 blob/content://、FFmpeg wasm
    本地文件),零远程请求;
  4. 本地播放、SAF 选歌、转码、媒体通知均不依赖该权限。

→ 结论:这条权限是「纯预留」,删除后系统将强制禁止本应用建立任何网络连接,
作为隐私卖点保留;未来加在线功能(歌词抓取/在线流/检查更新)或需 live-reload 调试时,
在 Manifest 注释处加回一行即可。

实现

  • AndroidManifest.xml:删除 <uses-permission android:name="android.permission.INTERNET" />,
    原位置留还原指引注释;
  • android/app/build.gradle:versionCode 58 → 59,versionName 2.22.17 → 2.22.18;
  • www/index.html:设置页版本号 v2.22.18。

验证(aapt 实测最终 APK)

aapt dump permissions app-debug.apk 输出(无 INTERNET,且无依赖库合并回注):

uses-permission: android.permission.READ_MEDIA_IMAGES
uses-permission: android.permission.POST_NOTIFICATIONS
uses-permission: android.permission.FOREGROUND_SERVICE
uses-permission: android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK
permission: com.musicplayer.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION(androidx 自动生成)

构建与归档

  • cap copy → assembleDebug BUILD SUCCESSFUL(20s,JDK 21)。
  • 归档:python _release/archive_release.py 2.22.18 59(source 快照 32.3MB + APK 本版/回滚基线 + 双 zip)。
  • 回滚基线:APK/app-v2.22.17-code58.apk(亦在 <归档>/_apk_backup/)。

装机记录(待补)

  • adb push 成功;pm install -r 两次 INSTALL_FAILED_ABORTED: User rejected permissions
    (设备熄屏时弹窗弹不出直接秒拒;唤醒亮屏后 pm install 挂起等待设备端确认)。
  • 待在平板上确认厂商USB 安装弹窗后补装,并实测:
    1. 正常启动、扫描/播放本地歌曲(验证 scheme 拦截加载不受影响);
    2. 转码开关开启后 FFmpeg wasm 本地加载正常;
    3. 设置 → 关于,版本显示 v2.22.18;
    4. 系统设置 → 应用 → 权限,确认无「网络」相关项。

构建备忘

同 v2.22.13(cap copy → JAVA_HOME=<JDK 21> → assembleDebug
→ adb push /data/local/tmp + pm install -r)。
装机坑补充:厂商设备熄屏状态下 USB 安装确认弹窗不弹、直接秒拒
(INSTALL_FAILED_ABORTED: User rejected permissions);先唤醒亮屏再装。