AndroidRuntime: java.lang.AbstractMethodError解决方案

背景介绍

今天同事尝试编译apk的release版本,编译成功,但是运行时,却爆出这个运行时异常,导致crash。

排查过程

定位出错位置

通过查看异常的堆栈,爆出异常的方法是一个我们引入的jar包里,而这jar包引用方法是compileOnly,而compileOnly依赖的用途

  1. 编译时用于构建项目,但是运行时不需要
  2. 在编译时依赖它的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解决方案相关推荐

  1. JAVA异常:java.lang.AbstractMethodError: ...tomcat.websocket.server.WsSessionListener.sessionCreated

    JAVA异常:java.lang.AbstractMethodError: org.apache.tomcat.websocket.server.WsSessionListener.sessionCr ...

  2. java.lang.AbstractMethodError: javax.xml.transform.TransformerFactory

    java.lang.AbstractMethodError: javax.xml.transform.TransformerFactory 1.环境及报错场景 2.报错数据 3.问题分析 4.解决 5 ...

  3. android studio到项目报错:Caused by: java.lang.AbstractMethodError

    导入网上下载的android 项目直接报错Caused by: java.lang.AbstractMethodError,报错信息如下: java.lang.AbstractMethodError这 ...

  4. java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setCharacterStream(ILjava/io/Reader;

    出现上述异常是在使用MySQL进行大文本数据的读写时,使用PreparedStatement中的 setCharacterStream(int parameterIndex,Reader reader ...

  5. java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/

    今天启动tomcat的时候出现了这样的错误 java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationC ...

  6. java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho

    使用Ribbon负载均衡时出现有以下错误 java.lang.AbstractMethodError:org.springframework.cloud.netflix.ribbon.RibbonLo ...

  7. 使用SpringData出现java.lang.AbstractMethodError

    最近学习一下SpringData,在添加SpringData支持的时候,出现了这样的问题: SpringData需要的jar有:spring-data-jpa.jar  spring-data-com ...

  8. SSM:Spring整合MyBatis框架时出现 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManaged

    QUESTION:出现异常:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction ...

  9. java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion

    java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion问题解决方法,导致本文问题的原因是缺少一个 ...

最新文章

  1. 关于催收那些事儿(下)
  2. Linux的进程/线程/协程系列4:进程知识深入总结:上篇
  3. 风格化图像_CVPR2019:基于神经网络纹理转换的图像超分辨率
  4. 利用ros3djs接收pointcloud2在web端显示
  5. 不到70行 Python 代码,轻松玩转 RFM 用户分析模型(附案例数据和代码)
  6. bootstrap-suggest插件处理复杂对象时的解决方案
  7. win18系统如何打开c语言,控制面板在哪里打开(Windows打开控制面板的方法)
  8. Flowable工作流引擎
  9. Ubuntu18.04耳机无声音解决方法
  10. 玩抖音是浪费时间吗?
  11. 3.蚁群算法求解格栅地图路径规划matlab代码
  12. 360全景拍摄曝光问题如何处理?
  13. 关系型数据库中联合主键和唯一索引的应用
  14. 3D建模入行难就业,入职网易腾讯真就是游戏建模师的天花板吗?
  15. android sdl 插件,Android Studio用cmake编译SDL2
  16. 程序是怎样跑起来的-计算机组成原理概要
  17. 从管理1800人团队到退隐江湖,阿里留不下的饿了么 CTO 是我的领导!
  18. sprite Kit Actions(三)
  19. 华为机试-求int型数据在内存中存储时1的个数
  20. codesys工控机_CODESYS Control RTE SL(实时性要求高)

热门文章

  1. 麻省理工公开课:线性代数 正交向量与子空间
  2. html文字边框环绕,使用css的文本边框(围绕文本的边框)
  3. windows分屏 拔掉显示器之后软件不在主显示器上显示问题
  4. pdm文件服务器,如何设置pdm服务器
  5. 智慧职教云计算机文化基础,2020智慧职教云课堂计算机文化基础答案最新最全单元测试答案...
  6. SSD为什么需要Trim?
  7. 简单20行python代码_用 20 行 python 代码实现人脸识别!Python实现就是这么简单!...
  8. oracle显示人民币,在Oracle中将小写人民币转换成大写
  9. 处理setInterval造成的浏览器内存溢出
  10. 大神教你uefi启动安装win7操作方法