Skip to content

1.0.7

Choose a tag to compare

@ldxm666 ldxm666 released this 18 Sep 13:24
· 2 commits to main since this release

v1.0.7 (2026-09-18)

修复:高德首页「删了标签,悬浮栏没被占满」

藏掉标签只改了槽位宽(weight 平分),但那一层选中胶囊 id=tab_bg_layer 的宽度
是高德自己按 totalWidth / 标签总数 算死的,它不知道我们藏了几个。
于是 5 个标签变 2 个之后胶囊还是 201px,首页 / 我的悬在 1/4、3/4,中间和两头全是空的。

现在每个可见槽位的胶囊层会被撑成槽位宽度本身 —— 等价于高德自己按 2 个标签排出来的样子。
真机实证:TAB-FILL slot=503 visible=2 rowW=1006,整条悬浮栏占满。

修复:「部分隐藏」会把路线规划页的信息模块一起抹掉(严重)

根因是整棵 decor 树照单全收:路线页备选卡片的里程文案 2379公里 / 34米
命中了首页信息流的「距离标签」规则(isDistanceLabel),collapseHost 顺着父链
爬到列表宿主,把「24小时22分 / 大众常选 / 封路」那一整排路线信息模块 GONE 掉。

现在加了页面闸门(铁律 G):首页与「我的」页都带底部悬浮标签栏
(LiteTabBar > TabItemLayoutV2),路线页 / 搜索页 / 导航页没有。
认不出标签栏就整轮放弃,一个节点都不碰;列表绑定钩子同样受这道闸门约束。
真机实证:进入路线页后 COLLAPSE / BIND-HIDE 归零,三个备选路线卡片完整。

新增:隐藏桌面图标(可开关)

LAUNCHER intent-filter 移到 activity-alias(.LauncherAlias)上,
设置页新增「隐藏桌面图标」开关,切的就是这个组件的 enabled 状态。

  • 隐藏时挂一条常驻通知当回家的路(点按回设置页),并申请 POST_NOTIFICATIONS;
  • 手动兜底:adb shell am start -n io.github.ldxm666.mapadkiller/.MainActivity;
  • 在 LSPosed 管理器里把模块停用不受影响,桌面图标状态存在系统组件表里。

真机实证:disabledComponents: io.github.ldxm666.mapadkiller.LauncherAlias,
resolve-activity -c LAUNCHER 返回 No activity found,通知正常常驻。

新增:「收藏夹」独立开关

宫格第 3 行是轮播格(景点游玩 / 离线地图 / 通行费助手 / 收藏夹 / 更多工具 …
在几个槽位里换着显示)。「收藏夹」以前被并进「更多工具」的别名,
受「扩展工具页」和「更多工具」双重夹击,不管怎么设都是隐藏的。

  • 从 TOOL_EXTRA_LABELS 里摘出来,TOOL_ALIAS 归一成自己的键;
  • 留不留,只看这一格此刻显示的那个文案自己的开关,不再看 cellKey
    (那是首见文案钉住的键,轮播格钉错了就永远放不出来);
  • 「保过一次就永久保」:轮播轮到收藏夹时会把格子放出来,并把它从隐藏登记表里摘掉;
  • 收行判据改成配置驱动(markKeep)并支持反悔:
    以前按当时的 width/height 判空行,AJX 首帧还没量过时整行会被误判成空行收掉,
    而 squashedRows 每轮重申 GONE+height=0 —— 那一行就永久死了。

新增:隐藏搜索页金刚区(美食 / 酒店 / 加油站 / 休闲玩乐 / 扫街榜)

搜索页顶部那排分页运营位,设置页新增「高德 · 搜索页」分区独立开关(默认显示)。

识别方式是结构投票:只有当某个容器子树里同时挂着 >=4 个分类文案时才认它,
命中从上往下第一个满足的祖先(最小那个),再往上走几层把分页小圆点一起收掉。
单看一个「美食」绝不动手 —— 首页信息流、我的页、宫格里都有它。
这条规则不属于首页,所以跑在页面闸门之前。
真机实证:SEARCHCAT-HIDE Container [31,13 1017x223],金刚区与圆点一起消失,
搜索框 → 快捷 chip → 历史记录 之间不留空带。

修复:百度地图卡在开屏,要按返回键才进主页(严重)

根因:广告 SDK 自动检索把 com.meishu.sdk.core.ad.splash.SplashAdLoader#loadAd
一起吞了(不 proceed、返回默认值)。百度开屏正是等这条回调往下走的,
回调永远不来 → 开屏流程永远收不了尾,屏幕还留一层不消失的暗色蒙层。

修法:凡是开屏链路(类名或方法名含 splash / kaiping)的加载方法一律不吞,
原方法照常执行。开屏广告不需要在这一层拦 —— 视图层已经用 alpha=0 兜底,
零曝光且完全不影响开屏自己的收尾节奏。

修复:百度开屏广告被 GONE 掉同样会掐死收尾

视图层原来对开屏广告根做 setVisibility(GONE)。真机实证:GONE 之后
「跳过 5s」倒计时与收尾回调一起死,同样表现为卡开屏。
改成 setAlpha(0f) —— 视图照常 measure/layout/跑动画/收回调,只是看不见。
真机实证:日志从 hidden 变 hidden(alpha0),倒计时 5s→4s 正常走,
百度冷启动 1 秒内进入 MapsActivity,无蒙层、无广告曝光。

修复:首页「去幸福路步行街」快捷卡被压成半张(用户报「半遮住、很难看」)

根因:那张卡里也有一个写着「打车」的按钮,ascendSmallCell 照样爬到了它的容器
(161x95,父容器 1006x210),于是它被当成工具宫格的一格;packRow 随后
按工具格尺寸(158 宽)把整张卡重排 —— 卡片文字被压成 84px 宽,
「去幸福路步行街」只剩「去幸」两个字。

真机日志证据:TOOL-HIDE 打车 [801,57 161x95] + TOOL-REPACK [0,0 1006x210] cells=4。

修法:两道形状闸门。工具格实测 158x147 / 158x164,所以

  • applyTools 里先问 looksLikeToolCell():宽 120220 且高 120200 才算宫格格子;
  • packRow() 入口再加一道同样的闸门,任何被误判的容器都不会被重排。

真机实证:TOOL-HIDE 打车 [636,0 158x164](真格子),
卡片文案恢复 w=617(与停用模块时的基线完全一致),TOOL-REPACK 不再误伤。

修复:「设置家 / 设置单位 / 常去地点」不再连带整张卡

这一排和「去XX」快捷卡常常在同一个 AJX item 里,原来走 collapseHost
会把整张 item 一起收掉。现在 hideChipsRowOnly() 只摘那一排
(最小、且子树里挂着 ≥2 个 chips 文案的祖先),真机日志 CHIPS-HIDE。

修复:「更多工具」页白屏 + 收藏夹看不见(严重)

两个症状同一个根因:搜索页金刚区的规则跑到「更多工具」页上去了。

applySearchCats() 按设计跑在首页闸门之前(搜索页没有底部标签栏),
而「更多工具」页的「服务」区里全是同一批分类词 —— 美食 / 洗车养车 / 洗牙 /
休闲玩乐 / 订酒店… 于是整页被当成金刚区收掉,用户点进去就是一片白。

同一个根因还让「收藏夹」看着像没生效:那一页的入口全被收没了,
开关开不开当然都看不见(开关本身一直是好的)。

另外标签级即时隐藏(消闪烁那段)以前不分页面:只要文案命中就盖掉,
于是「更多工具」页里的「代驾 / 旅游度假 / 景点游玩…」变成"有图标没字",
就是用户说的「偶尔跳出其他工具出来」。

修法(两道):

  • 金刚区规则加结构护栏:命中的容器祖先链上必须有 HorizontalScroller
    —— 搜索页金刚区是分页横向滚动条里的一排,「更多工具」页的分类宫格不是;
  • 标签级即时隐藏加归属护栏:工具键必须真的是宫格格子(looksLikeToolCell),
    规则键必须真的在首页(homeCtx)。

真机实证(A/B 对照):

停用模块:更多工具页 30 条文案正常渲染,「最近使用」里 收藏夹 / 驾车 / 租车 都在
启用模块:同样 30 条文案,收藏夹在,白屏消失
模块动作全部落在首页(TOOL-HIDE 几何全是 158x147 / 158x164)
搜索页:SEARCHCAT-HIDE Container [31,13 1017x223] 照常命中

新增:首页运营推广卡槽位开关(「去XX」/ AI叫车 / 顺风车…)

首页底部那个槽位是高德的轮播推广位,标题一天能换好几张。实测同一台机器上
连着几十分钟就换了五张:

去幸福路步行街    / 有座不拥挤 · 行程有保障     / 打车
帮我预约车辆      / 通勤高峰担心拥堵、叫不到车 / AI叫车
帮我叫一辆空气清新的车 / 怕叫到臭车?试试个性化叫车 / 去打车
预约顺风车,一口价超便宜 / …                 / 去预约
顺路搭模式上线了  / 拼座7折起 · 乘客邀请直接拼入 / 去预约

盯文案永远追不上,所以最后落到结构上。真机 uiautomator 实测这五张卡版式完全一致:

标题  [185,2093] w≈580~617 h=55
副标  [185,2161] w=150~179 h=39   (两个 chip)
按钮  [845,2130] w=112 h=47       (右侧药丸)

判据:整屏宽(≥90%)+ 高 180320 + 一个 ≥5 字的标题 + 一个 27 字的短按钮,
并且这个节点本身就是列表 item(父级是 AjxList2)。

三条护栏:

  • 宫格 item 是 1080x508,高度直接出界;
  • 「我的」页那些整屏宽的行里必有 MY_* 文案,一律排除;
  • 天气 / 限行卡形状也撞得上,按「°C / 天气 / 限行 / 气温 / 降雨」排除。

两个实现要点(都踩过):

  1. 扫文案时直接读视图(AJX 的 Label 把文字挂在 contentDescription 上),
    不能查 anchors 索引 —— 索引里只有"被规则认领过"的文案,新面孔永远等不到;
  2. 绑定那一刻 item 还是 0x0,判不了几何 —— 所以除了 bind 钩子,
    每一轮 applyPass 在布局稳定后还会再找一遍(PROMO-HIDE)。

真机实证:BIND-HIDE home_quick_card [0,0 0x0] —— 命中的正是没写进任何文案表的
「顺路搭模式上线了 / 去预约」那一版。

新增:「去XX」快捷打车卡单独开关

首页底部那张「去幸福路步行街 / 有座不拥挤 / 行程有保障」的智能目的地卡,
设置页新增独立开关(默认显示)。

判定用的是「标题形状 + 旁证」两条:标题以「去」开头、长度 2~16、不是工具键也不是
chips 键;并且往上 8 层内能找到挂着「有座不拥挤 / 行程有保障 / 打车…」的小块。
只有形状命中就乐观登记,旁证由每一轮 applyPass 再判 —— 因为标题 setText 的时候,
旁边那行小字往往还没写进去,当场判定必然落空。

真机实证:BIND-HIDE home_quick_card [37,507 1006x242],卡片整条消失,
页面收得干净,不留空带。

增强:常驻重申心跳

resume 时只排 6 轮 APPLY(最晚 4.2s),之后 applyPass 停手;而 AJX 在滚动 /
重渲染时会把被压掉的 item 复活。现在加了一条只跑 reassert() 的 300ms 心跳,
并在 onBindViewHolder 里对已判定要收的 item 立刻重新按回去。

修复:隐藏不再写 lp.height = 0

AJX 重绑时会 setVisibility(VISIBLE) 但保留我们写的 height=0,
那张卡就变成"半张、文字被切"的残片。改成只 GONE:GONE 的节点根本不会绘制,
从机制上不可能产生残片。

其它

  • 页面闸门同时让「我的」页之外的误伤面归零;
  • versionCode 7 → 8。