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

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

相关文章

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

SpringBoot的全局异常拦截实践过程

《SpringBoot的全局异常拦截实践过程》SpringBoot中使用@ControllerAdvice和@ExceptionHandler实现全局异常拦截,@RestControllerAdvic... 目录@RestControllerAdvice@ResponseStatus(...)@Except

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

精准寻车+鸿蒙有礼特别版均已上线! 华为鸿蒙HarmonyOS 6负一屏新升级

《精准寻车+鸿蒙有礼特别版均已上线!华为鸿蒙HarmonyOS6负一屏新升级》不少朋友升级华为鸿蒙HarmonyOS6后,发现华为负一屏此次也新增了精准寻车功能,还为过往鸿蒙5.1及以上用户再度... 最近科技圈热议话题当属华为全新发布的Mate 80系列,这次不仅有全金属机身,第二代红枫影像和全新麒麟新品

Java Exception异常类的继承体系详解

《JavaException异常类的继承体系详解》Java中的异常处理机制分为异常(Exception)和错误(Error)两大类,异常分为编译时异常(CheckedException)和运行时异常... 目录1. 异常类的继承体系2. Error错误3. Exception异常3.1 编译时异常: Che

故障定位快人一步! 华为交换机排障命令汇总

《故障定位快人一步!华为交换机排障命令汇总》在使用华为交换机进行故障排查时,首先需要了解交换机的当前状态,通过执行基础命令,可以迅速获取到交换机的系统信息、接口状态以及配置情况等关键数据,为后续的故... 目录基础系统诊断接口与链路诊断L2切换排障L3路由与转发高级调试与日志性能、安全与扩展IT人无数次实战

Python异常处理之避免try-except滥用的3个核心原则

《Python异常处理之避免try-except滥用的3个核心原则》在Python开发中,异常处理是保证程序健壮性的关键机制,本文结合真实案例与Python核心机制,提炼出避免异常滥用的三大原则,有需... 目录一、精准打击:只捕获可预见的异常类型1.1 通用异常捕获的陷阱1.2 精准捕获的实践方案1.3

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放