Android multidex类访问异常问题解决
Android multidex类访问异常问题解决
完整堆栈信息:
java.lang.IllegalAccessError: Illegal class access ('com.zlrab.Demo' attempting to access 'com.zlrab.Tool') in attempt to invoke static method byte[] com.android.Tool.test(byte[], java.lang.String) (declaration of 'com.android.Demo' appears in /data/app/com.zlrab.demo-xlCFQRKUSZ00ISiybj94UQ==/base.apk!classes2.dex)at com.zlrab.Demo.test(Demo.java:78)at com.zlrab.Demo.init(Demo.java:71)at com.zlrab.Application.onCreate(Unknown Source:121)at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1189)at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6603)at android.app.ActivityThread.access$1500(ActivityThread.java:235)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1916)at android.os.Handler.dispatchMessage(Handler.java:107)at android.os.Looper.loop(Looper.java:225)at android.app.ActivityThread.main(ActivityThread.java:7563)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:994)
从堆栈中可看到,在Demo的test()函数调用Tool的test()函数引发崩溃
使用apktool解开安装包,发现这个apk包含两个dex
smali就是主dex,smali_classes2就是副dex
差异一:Tool位于smali,Demo位于smali_classes2
查看两个类的头信息
![]()
差异二:Tool使用final修饰且非public的类,Demo是一个public的类
结论:跨dex访问非public类引发异常
解决方案:使用public修饰Tool类
Android multidex类访问异常问题解决相关推荐
- Android Studio:依赖异常问题解决
异常 异常.png 解决方法 在项目的根目录下,buildscript -> repositories 下添加 mavenCentral() , allprojects -> reposi ...
- Windows Android SDK下载安装,配置,异常问题解决教程
Windows Android SDK下载安装,配置,异常问题解决教程 参考文章: (1)Windows Android SDK下载安装,配置,异常问题解决教程 (2)https://www.cnbl ...
- Android MediaPlayer使用之网络访问异常
Android MediaPlayer使用之网络访问异常 1.问题描述 2019-04-02 21:26:15.552 22138-22138/com.uyeh.mediaplayertest D/M ...
- Android 中关与类转换异常的问题。
下午做项目时,由于修改了一次布局,当我再次运行程序的时候,抛出异常ClassCastException 的类转换异常.我找了好半天,可是没找到原因.最后clean了下空间,没有异常了,在这里祭奠下我浪 ...
- android如何获取网络的状态码,Android RxJava+Retrofit网络异常、状态码统一处理
Android RxJava+Retrofit 网络异常捕获.状态码统一处理 前言 近来使用RxJava+Retrofit进行开发,在项目中遇到这样一个需求,联网请求获得数据异常时,需要将对应的Mes ...
- Android Multidex(dex分包)
Android Multidex(dex分包) 分包: 一个dex分成多个dex 什么要分包 单个 Dalvik Executable (DEX) 中, 可调用的最大的引用总数为 65536 ,若超过 ...
- android 行车记录仪分析,基于Android架构行车记录仪的异常掉电可播放视频方法与流程...
本发明涉及摄录像视频技术领域,特别涉及一种基于Android架构行车记录仪的异常掉电可播放视频方法. 背景技术: 随着车联网概念的兴起和技术的积累,越来越多的智能设备被接入到车辆上.行车记录仪作为非常 ...
- 第13章 统一的数据访问异常层次体系
第13章 统一的数据访问异常层次体系 本章内容 DAO模式的背景 梦想照进现实 发现问题,解决问题 不重新发明轮子 要了解Spring为什么要提供统一的数据访问异常层次体系,我们得先从DAO模式说起. ...
- 1.2 内置异常类,异常方法
Java 语言定义了一些异常类在 java.lang 标准包中. 标准运行时异常类的子类是最常见的异常类.由于 java.lang 包是默认加载到所有的 Java 程序的,所以大部分从运行时异常类继承 ...
最新文章
- 当初我要是这么学习Nginx就好了!(多图详解)
- Failed to find byte code for java/util/function/BiConsumer
- 项目管理-时间冲突带来的问题
- Python学习:列表
- C++继承的基本语法
- 要重复多少次变成潜意识_说了多少次了!通过学校区域一定要......
- RocketMQ的Consumer详解之重复消息的解决方案
- 转: MySQL 赋予用户权限(grant %-远程和localhost-本地区别)
- 前端学习(1402):多人管理22验证joi
- 小汤学编程之JavaEE学习day10——Spring
- 数学边界(数学萌芽、初等数学、高等数学)
- 通过IIS发布网站教程【十分钟完成一个网站发布】
- 【C++】关于set的一些奇怪问题:错误C2676 二进制“<”:“const _Ty”不定义该运算符或到预定义运算符可接收的类型的转换
- 微众银行电话面试java_微众银行面试经验
- python量化交易实战 pdf 王晓华_Ext JS实战(第2版)pdf
- 将一个数的每一位都正序输出——简单算法
- ArduPilot飞行前检查——PreArm解析
- The following packages have unmet dependencies: build-essential : Depends: libc6-dev but it is not
- shen_tian_hao的C++快快编程AC代码库(每周更新)
- jquery弹幕效果
热门文章
- 严重: Servlet.service() for servlet [springmvc] in context with path [/ssm02] threw exception
- 两个八进制小数怎么相加_八进制怎么算
- vr实景全景是怎么制作的 如何更好的制作出vr全景视频
- 解决更换微信公众号后提现签名错误的问题
- 高通宣布停止向俄罗斯公司销售产品;微信、抖音上线一键关闭 “个性化推荐 ”;Android 13官宣:5月11日见|极客头条
- 无网络也没关系 Google云端硬盘新增脱机模式
- Java线上问题排查
- C#控件中的KeyDown、KeyPress 与 KeyUp使用区别
- 【C51单片机】抽号摇奖机设计(仿真)
- ⑨SparkSQL-多数据源创建DataFrame