常见失效场景 — 制造商留空、DPI、编解码器、定位
现象一:制造商伪装没生效
原因
Guise Reborn 明确分离了 Build.BRAND 和 Build.MANUFACTURER。如果你制造商字段留空,Guise 不 Hook Build.MANUFACTURER——目标应用继续读到设备真实的制造商值。
这是设计行为,不是 bug
在某些 ROM 场景下(比如在 Realme 上伪装成 OPPO),Build.MANUFACTURER 本来就是 OPPO,留空让它继续读真实值反而是你想要的。
修复
想伪装制造商,就填个值(比如 Xiaomi、Samsung),别留空。
现象二:应用布局错乱、控件变形
原因
你开启了 DPI 伪装,而且改得太猛。Density Independent Pixel(dp)的基准值变了,整个应用的布局重新计算——部分应用对 DPI 变化的兼容性不好。
修复
| 情况 | 操作 |
|---|---|
| 一般应用 | DPI 改小一点(比如真机是 360,改成 320~340) |
| 全屏游戏 | 关闭 DPI 伪装,改分辨率(但分辨率 Guise 不改——这是厂商层改的) |
| WebView 应用 | DPI 改动可能导致 WebView 渲染异常,建议关闭 |
| 布局本身没问题 | 这是正常行为,改完 DPI 布局就是会变 |
现象三:视频播放失败或有画面无声
原因
你开启了编解码器厂商前缀伪装。MediaCodecList 只能过滤不能增加——你隐藏了 c2.qti(高通)前缀后,目标应用可能找不到它依赖的高通解码器。
修复
关闭编解码器厂商前缀伪装。这是手动开关,默认就是关的——只有你明确需要伪装芯片时才开它。
现象四:定位始终是真机位置
原因排查清单
| 检查项 | 怎么查 |
|---|---|
| IP 定位 | 经纬度伪装只覆盖应用内 GPS 读 API,IP 定位是服务端推断的,需要 VPN/代理 |
| 应用用的是私有接口 | 部分厂商 ROM 有私有位置查询 |
| 只开了「隐藏定位通道」没开「经纬度伪装」 | 隐藏通道让应用什么都读不到,但如果你没给它看假的坐标…… |
| 应用绕过标准 API | 某些应用直接读 /proc、直接发网络请求 |
现象五:目标应用启动后闪退或崩溃
可能原因
- API 级别改了 —
Build.VERSION.SDK_INT不能随便改。应用会根据 API 做运行时分支,改成不存在的值直接崩 - DPI 改得太极端 — 某些应用对极端 DPI 值(< 160 或 > 640)做了防御
- 应用多进程 — Guise 需要确保每个进程都加载了 Hook
排查步骤
- 用 Guise Test 排除配置问题
- 减半配置(先只改品牌型号,逐个加)
- 检查 Android 版本 / SDK 级别有没有乱改
现象六:Wi-Fi 信息伪装不生效
修复
升级到 Guise 2.0.3+。2.0.3 修复了部分应用(如 Play 版钉钉)的 Wi-Fi 信息伪装兼容性。