AndroidRuntime java.lang.AbstractMethodError解决方案
AndroidRuntime: java.lang.AbstractMethodError解决方案
背景介绍
今天同事尝试编译apk的release版本,编译成功,但是运行时,却爆出这个运行时异常,导致crash。
排查过程
定位出错位置
通过查看异常的堆栈,爆出异常的方法是一个我们引入的jar包里,而这jar包引用方法是compileOnly,而compileOnly依赖的用途
- 编译时用于构建项目,但是运行时不需要
- 在编译时依赖它的api,但是它API的真正实现是在运行时环境
我们具体看一下这个AbstractMethod异常的api解释
/** * Thrown when an application tries to call an abstract method. * Normally, this error is caught by the compiler; this error can * only occur at run time if the definition of some class has * incompatibly changed since the currently executing method was last * compiled.
大体意思就是这个错误只有在运行时才会出现,编译时与运行时的方法不一致导致。
另外一个关键信息是,debug版本就没有这个错误,而debug与release的主要区别就在于在build.gradle中是否将minifyenabled置为true,这个开关的主要用途就是是否启用混淆。
尝试解决
我们先从混淆入手,把这调用该方法的类加上keep class,然后重新打release包,运行一下,果然没有再报那个错误了。
总结
当我们使用一些jar包只用来编译时使用时,如果我们加了混淆,会导致运行时系统类回调时找不到这个对应的实现类,进而报错
AndroidRuntime java.lang.AbstractMethodError解决方案相关推荐
- JAVA异常:java.lang.AbstractMethodError: ...tomcat.websocket.server.WsSessionListener.sessionCreated
JAVA异常:java.lang.AbstractMethodError: org.apache.tomcat.websocket.server.WsSessionListener.sessionCr ...
- java.lang.AbstractMethodError: javax.xml.transform.TransformerFactory
java.lang.AbstractMethodError: javax.xml.transform.TransformerFactory 1.环境及报错场景 2.报错数据 3.问题分析 4.解决 5 ...
- android studio到项目报错:Caused by: java.lang.AbstractMethodError
导入网上下载的android 项目直接报错Caused by: java.lang.AbstractMethodError,报错信息如下: java.lang.AbstractMethodError这 ...
- java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setCharacterStream(ILjava/io/Reader;
出现上述异常是在使用MySQL进行大文本数据的读写时,使用PreparedStatement中的 setCharacterStream(int parameterIndex,Reader reader ...
- java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/
今天启动tomcat的时候出现了这样的错误 java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationC ...
- java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho
使用Ribbon负载均衡时出现有以下错误 java.lang.AbstractMethodError:org.springframework.cloud.netflix.ribbon.RibbonLo ...
- 使用SpringData出现java.lang.AbstractMethodError
最近学习一下SpringData,在添加SpringData支持的时候,出现了这样的问题: SpringData需要的jar有:spring-data-jpa.jar spring-data-com ...
- SSM:Spring整合MyBatis框架时出现 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManaged
QUESTION:出现异常:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction ...
- java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion
java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion问题解决方法,导致本文问题的原因是缺少一个 ...
最新文章
- 关于催收那些事儿(下)
- Linux的进程/线程/协程系列4:进程知识深入总结:上篇
- 风格化图像_CVPR2019:基于神经网络纹理转换的图像超分辨率
- 利用ros3djs接收pointcloud2在web端显示
- 不到70行 Python 代码,轻松玩转 RFM 用户分析模型(附案例数据和代码)
- bootstrap-suggest插件处理复杂对象时的解决方案
- win18系统如何打开c语言,控制面板在哪里打开(Windows打开控制面板的方法)
- Flowable工作流引擎
- Ubuntu18.04耳机无声音解决方法
- 玩抖音是浪费时间吗?
- 3.蚁群算法求解格栅地图路径规划matlab代码
- 360全景拍摄曝光问题如何处理?
- 关系型数据库中联合主键和唯一索引的应用
- 3D建模入行难就业,入职网易腾讯真就是游戏建模师的天花板吗?
- android sdl 插件,Android Studio用cmake编译SDL2
- 程序是怎样跑起来的-计算机组成原理概要
- 从管理1800人团队到退隐江湖,阿里留不下的饿了么 CTO 是我的领导!
- sprite Kit Actions(三)
- 华为机试-求int型数据在内存中存储时1的个数
- codesys工控机_CODESYS Control RTE SL(实时性要求高)
热门文章
- 麻省理工公开课:线性代数 正交向量与子空间
- html文字边框环绕,使用css的文本边框(围绕文本的边框)
- windows分屏 拔掉显示器之后软件不在主显示器上显示问题
- pdm文件服务器,如何设置pdm服务器
- 智慧职教云计算机文化基础,2020智慧职教云课堂计算机文化基础答案最新最全单元测试答案...
- SSD为什么需要Trim?
- 简单20行python代码_用 20 行 python 代码实现人脸识别!Python实现就是这么简单!...
- oracle显示人民币,在Oracle中将小写人民币转换成大写
- 处理setInterval造成的浏览器内存溢出
- 大神教你uefi启动安装win7操作方法