混淆导致Crash

2024-09-02 20:18
文章标签 导致 混淆 crash

本文主要是介绍混淆导致Crash,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

崩溃log

     Caused by: java.lang.NoSuchFieldError: no "J" field "peer" in class "Lnet/sourceforge/zbar/ImageScanner;" or its superclassesat net.sourceforge.zbar.ImageScanner.init(Native Method)
2020-09-24 13:55:22.821 7445-7445/com.xiaomi.micolauncher E/AndroidRuntime:     at net.sourceforge.zbar.ImageScanner.<clinit>(ImageScanner.java:38)at cn.bingoogolapple.qrcode.zbar.ZBarView.a(ZBarView.java:43)at cn.bingoogolapple.qrcode.a.f.<init>(QRCodeView.java:55)at cn.bingoogolapple.qrcode.zbar.ZBarView.<init>(ZBarView.java:37)at cn.bingoogolapple.qrcode.zbar.ZBarView.<init>(ZBarView.java:33)... 28 more

代码

public class ImageScanner
{/** C pointer to a zbar_image_scanner_t. */private long peer;static{System.loadLibrary("zbarjni");init();}private static native void init();public ImageScanner (){peer = create();}/** Create an associated peer instance. */private native long create();

错误原因:

混淆导致ImageScanner 这个类的peer 被混淆了,但是peer 应该是被c层用到

总结:

一般来说,混淆导致找不到有这些原因:
1.成员变量或者方法被C层使用
2.类、方法、变量被反射调用,例如:Json 等网络数据 混淆之后会有问题,找不到值。

这篇关于混淆导致Crash的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

DAY16:什么是慢查询,导致的原因,优化方法 | undo log、redo log、binlog的用处 | MySQL有哪些锁

目录 什么是慢查询,导致的原因,优化方法 undo log、redo log、binlog的用处  MySQL有哪些锁   什么是慢查询,导致的原因,优化方法 数据库查询的执行时间超过指定的超时时间时,就被称为慢查询。 导致的原因: 查询语句比较复杂:查询涉及多个表,包含复杂的连接和子查询,可能导致执行时间较长。查询数据量大:当查询的数据量庞大时,即使查询本身并不复杂,也可能导致

71-java 导致线程上下文切换的原因

Java中导致线程上下文切换的原因通常包括: 线程时间片用完:当前线程的时间片用完,操作系统将其暂停,并切换到另一个线程。 线程被优先级更高的线程抢占:操作系统根据线程优先级决定运行哪个线程。 线程进入等待状态:如线程执行了sleep(),wait(),join()等操作,使线程进入等待状态或阻塞状态,释放CPU。 线程占用CPU时间过长:如果线程执行了大量的I/O操作,而不是CPU计算

一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程

1.症状 生产环境的一个服务突然无法访问,服务的交互过程如下所示: 所有的请求都是通过网关进入,之后分发到后端服务。 现在的情况是用户服务无法访问商旅服务,网关有大量java.net.SocketTimeoutException: Read timed out报错日志,商旅服务也不断有日志打印,大多是回调和定时任务日志,所以故障点在网关和商旅服务,大概率是商旅服务无法访问导致网关超时。 后

Qt: 详细理解delete与deleteLater (避免访问悬空指针导致程序异常终止)

前言 珍爱生命,远离悬空指针。 正文 delete 立即删除:调用 delete 后,对象会立即被销毁,其内存会立即被释放。调用顺序:对象的析构函数会被立即调用,销毁该对象及其子对象。无事件处理:如果在对象销毁过程中还涉及到信号和槽、事件处理等,直接 delete 可能会导致问题,尤其是在对象正在处理事件时。适用场景:适用于在确定对象已经不再被使用的情况下,并且不涉及异步处理或事件循环中的

ssh版本升级导致连接失败

公司系统使用的是第三方ssh插件jsch-0.1.39.jar,之前采集正常的,但是厂家服务器ssh升级成2.0版本,然后程序就报错,异常如下: com.jcraft.jsch.JSchException: Algorithm negotiation failat com.jcraft.jsch.Session.receive_kexinit(Session.java:510)at com.

JobScheduler 调用导致的运行时长30分钟的功耗问题

一、SDK 的使用情况与功耗影响 案例是否导致功耗变大onStartJob return true 且子线程没有调用jobFinished()告知系统功耗变大,最长带来30分钟的partial wakelock 长持锁onStartJob return true 且子线程调用jobFinished()告知系统功耗有影响,主要线程执行时长,标准是30秒内onStartJob return fals

Java应用对接pinpoint监控工具的时候,应用名称长度超出限制而导致接入失败

一、背景 java应用需要接入pinpoint,同一个虚拟机上的其他应用接入成功,唯独本应用不行。 首先排除是pinpoint agent的问题,因为其他应用都正常。 然后,我就对比二者的启动脚本。 -javaagent:/opt/pinpoint/pinpoint-bootstrap.jar -Dpinpoint.agentId=DA301004_17 -Dpinpoint.applic

LLVM IR指令VM混淆分析

未混淆编译  编写一个最简单的测试代码,对 test_add函数用于对两个数相加: int __attribute((__annotate__("vm"))) test_add(int a, int b) {int c = a + b;return c;}int main(void) {int c = test_add(1, 2);return c;} 编译成中间代码:  未加