v2.2.3(versionCode 223)— 悬浮窗按版本分流、装错包诊断
发布日期:2026-10-20。版本码:223。基线 v2.2.2(版本码 222)。
新增
- 悬浮窗按安装形态分流:免 root 内置版默认显示悬浮球;LSPosed 模块版默认不显示(悬浮窗主要面向免 root 用户),可在面板「其他 → 悬浮窗入口」手动开启。判定依据是宿主 APK 内是否存在
assets/lspatch/config.json,不依赖 root 状态、也不依赖 PackageManager。 host_mode诊断日志:event=host_mode pkg=<宿主> embedded=<true|false> kind=<lspatch-embedded|official-or-lsposed>,用于一眼判断用户装的是官方版还是内置版,方便排查「模块好像把高德签名改了」这类误报。
修复
host_signer在 Android 13+ 读不到证书(GET_SIGNATURES已废弃返回 null)→ 改用GET_SIGNING_CERTIFICATES。- 诊断日志误报包名(会打出
com.miui.contentcatcher/com.google.android.webview)→ 改为从宿主 Context 取包名,并按包名去重。 - 不再输出证书 DN / 指纹:LSPatch 会把宿主的 PackageManager 包装成「原版应用」,读到的始终是官方签名
CN=minimap,而非磁盘上重签名包的CN=xiawanli—— 该字段具有误导性,已删除。需要确认签名请对 APK 文件本身做校验(apksigner verify --print-certs)。
构建
- 模块版在构建期彻底移除免 root 专属实现:
tools/module_prune.py会在编译前复制一份源码并删除 9 个文件(悬浮面板 / 悬浮球 / 悬浮窗挂载 / 悬浮窗 hook / 自绘滑块 / 头像徽章 / 长按入口),并校验 9 个核心类仍在。模块 APK 的 dex 里这些类与相关字符串全部 0 命中,体积从 4,380,276 B 降到 4,331,124 B。 - 签名密钥固定并加构建守卫:
app/build.ps1现在会校验app/debug.keystore的证书,缺失或不匹配直接中止构建,避免再次出现「换密钥导致老用户无法升级」。
说明
- 2.2.3 同时包含 2.2.2 之后的所有修复:未登录用户打不开面板、面板关闭后无法再次打开、版本胶囊卡在「检查中」、部分设备显示「只读」与开关不生效(配置后端本地兜底)。
- 更新模块 APK 后若发现模块没生效:LSPosed 会缓存模块的
apk_path,重装后该路径可能指向已删除的旧目录,导致模块不注入(重启也不会自动刷新)。重启一次手机,或在 LSPosed 里取消再重新勾选一次作用域即可。
下载
| 你要装哪个 | 文件名 | 体积 | 说明 |
|---|---|---|---|
| root / LSPosed 用户 | MapClean-lsp-v2.2.3.apk
| 约 4 MB | 不会改动高德本体,只在运行时注入 |
| 普通用户(免 root) | amap-2.2.3-nonroot.apk
| 约 175 MB | 会替换你手机上的高德,签名变为 CN=xiawanli
|
装了模块版发现「模块没生效」?LSPosed 会缓存模块的 apk_path,重启一次手机(或在 LSPosed 里取消再勾选一次作用域)即可。
发现「高德签名被改了」?几乎一定是装了 175 MB 的内置版 —— 它本来就是重新签名的重打包高德。
反馈:Issues · Telegram 交流群