华为联运:资源混淆导致的浮标显示异常

2024-06-20 18:12

本文主要是介绍华为联运:资源混淆导致的浮标显示异常,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

问题

显示正常

正常情况,华为联运包登录成功之后会显示浮标(悬浮球),拖动浮标会出现拖到此处隐藏字样,如下所示:

在这里插入图片描述

显示异常

而在我们的横屏游戏中,遇到拖动到此处隐藏有部分内容被遮挡了,导致被拒审。

粗略看上层遮挡部分的高度正好等同于状态栏的高度,一开始怀疑是否设置全屏或水滴屏、刘海屏适配问题,经大概测试似乎不是。

在这里插入图片描述

分析

我们出包一般是先出资源混淆 + 代码混淆的包,这个包是有问题的。

后面尝试出一个非资源混淆 + 代码混淆的包,运行竟然是正常的,不得不怀疑是资源混淆导致的。

经查看华为链接 SDK 代码知道,浮标相关布局是这三个文件

在这里插入图片描述

布局文件内容对比过程中发现c_buoycircle_hide_guide_dialog.xml 和 c_buoycircle_window_small.xml 的内容完全一致(因为此前已有一部分华为资源是在白名单内不会被混淆),只有c_buoycircle_hide_notice.xml第二个布局文件内容存在差异
在这里插入图片描述

看到这里你可能已经明白了

看到这里怀疑到:
这个 LinearLayout 和 TextView 的资源 ID 被混淆了,难道这两个 view 是通过反射实例化?因为混淆找不到资源,导致部分逻辑没有走而出现问题?

经查看代码发,发现果然如此,它通过getIdentifier 和资源名称获得资源 ID 从而获得 view,关键在于 getIdentifier 是通过源资源名称获取 ID的,这个名称不能被混淆。

代码上如果top_notice_bg能够获取到布局,那么会对这个布局设置一个setMargins,恰巧 marginTop 的值正是状态栏高度

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

解决

那就变得简单了,既然是微信资源混淆导致,那把这个资源 ID 添加到白名单即可

R.id.top_*

其实还有一个问题:

为什么只有横屏会出现这种情况,竖屏不会?(这是华为联运 SDK 的代码逻辑了,不多想,躺平)

这篇关于华为联运:资源混淆导致的浮标显示异常的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078881

相关文章

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

Java捕获ThreadPoolExecutor内部线程异常的四种方法

《Java捕获ThreadPoolExecutor内部线程异常的四种方法》这篇文章主要为大家详细介绍了Java捕获ThreadPoolExecutor内部线程异常的四种方法,文中的示例代码讲解详细,感... 目录方案 1方案 2方案 3方案 4结论方案 1使用 execute + try-catch 记录

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li