1)BDMapAutoLevelConfig$Builder.smali 构造函数<init>(line3~line15)
原代码行:
const/high16 v2, 0x41980000 # 19.0f → defaultAutoLevel
iput v2, p0, Lcom/baidu/mapautosdk/autoapi/map/struct/BDMapAutoLevelConfig$Builder;->defaultAutoLevel:F
const v1, 0x419b3333 # 19.4f → maxAutoLevel上限
iput v1, p0, Lcom/baidu/mapautosdk/autoapi/map/struct/BDMapAutoLevelConfig$Builder;->maxAutoLevel:F
const/high16 v0, 0x41a00000 # 20.0f → planarNaviStatusMaxLevel
iput v0, p0, Lcom/baidu/mapautosdk/autoapi/map/struct/BDMapAutoLevelConfig$Builder;->planarNaviStatusMaxLevel:F
修改方案:
defaultAutoLevel:0x41980000 → 0x41900000(19→18)
maxAutoLevel:0x419b3333(19.4)→ 替换为0x41900000(18.0),限制最大只能到 18 级,不会再拉近到 19
planarNaviStatusMaxLevel:0x41a00000(20.0)→ 0x41900000(18.0)
2)BDMapAutoLevelConfig.smali 两个构造函数都要同步改
① 无参构造 <init>()V
const/high16 v2, 0x41980000 # defaultAutoLevel 19.0f
iput v2, p0, Lcom/baidu/mapautosdk/autoapi/map/struct/BDMapAutoLevelConfig;->defaultAutoLevel:F
const v1, 0x419b3333 # maxAutoLevel 19.4f
iput v1, p0, Lcom/baidu/mapautosdk/autoapi/map/struct/BDMapAutoLevelConfig;->maxAutoLevel:F
const/high16 v0, 0x41a00000 # planarNaviStatusMaxLevel 20.0f
iput v0, p0, Lcom/baidu/mapautosdk/autoapi/map/struct/BDMapAutoLevelConfig;->planarNaviStatusMaxLevel:F
替换规则同上,三处十六进制全部改成 18.0f 对应的0x41900000
② Parcel 序列化构造 <init>(Landroid/os/Parcel;)V
同样找到上面三个 const 浮点数行,同步替换,否则重启 / 切后台后配置重置回原版数值。
完整 MT 操作步骤:
MT 打开 apk → 进入 classes7.dex → Dex 编辑器 ++,分别打开两个 smali 文件
按上面三处浮点数批量替换十六进制,两个文件三处参数全部改完,缺一不可
保存全部 smali,退出 dex 编辑器,MT 弹窗执行【回编译】
回编译完成后,对修改后的 apk 执行完整签名(v2 签名,车机兼容性更好)
车机卸载原版百度地图车机版,安装修改包测试