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类访问异常问题解决相关推荐

  1. Android Studio:依赖异常问题解决

    异常 异常.png 解决方法 在项目的根目录下,buildscript -> repositories 下添加 mavenCentral() , allprojects -> reposi ...

  2. Windows Android SDK下载安装,配置,异常问题解决教程

    Windows Android SDK下载安装,配置,异常问题解决教程 参考文章: (1)Windows Android SDK下载安装,配置,异常问题解决教程 (2)https://www.cnbl ...

  3. Android MediaPlayer使用之网络访问异常

    Android MediaPlayer使用之网络访问异常 1.问题描述 2019-04-02 21:26:15.552 22138-22138/com.uyeh.mediaplayertest D/M ...

  4. Android 中关与类转换异常的问题。

    下午做项目时,由于修改了一次布局,当我再次运行程序的时候,抛出异常ClassCastException 的类转换异常.我找了好半天,可是没找到原因.最后clean了下空间,没有异常了,在这里祭奠下我浪 ...

  5. android如何获取网络的状态码,Android RxJava+Retrofit网络异常、状态码统一处理

    Android RxJava+Retrofit 网络异常捕获.状态码统一处理 前言 近来使用RxJava+Retrofit进行开发,在项目中遇到这样一个需求,联网请求获得数据异常时,需要将对应的Mes ...

  6. Android Multidex(dex分包)

    Android Multidex(dex分包) 分包: 一个dex分成多个dex 什么要分包 单个 Dalvik Executable (DEX) 中, 可调用的最大的引用总数为 65536 ,若超过 ...

  7. android 行车记录仪分析,基于Android架构行车记录仪的异常掉电可播放视频方法与流程...

    本发明涉及摄录像视频技术领域,特别涉及一种基于Android架构行车记录仪的异常掉电可播放视频方法. 背景技术: 随着车联网概念的兴起和技术的积累,越来越多的智能设备被接入到车辆上.行车记录仪作为非常 ...

  8. 第13章 统一的数据访问异常层次体系

    第13章 统一的数据访问异常层次体系 本章内容 DAO模式的背景 梦想照进现实 发现问题,解决问题 不重新发明轮子 要了解Spring为什么要提供统一的数据访问异常层次体系,我们得先从DAO模式说起. ...

  9. 1.2 内置异常类,异常方法

    Java 语言定义了一些异常类在 java.lang 标准包中. 标准运行时异常类的子类是最常见的异常类.由于 java.lang 包是默认加载到所有的 Java 程序的,所以大部分从运行时异常类继承 ...

最新文章

  1. 当初我要是这么学习Nginx就好了!(多图详解)
  2. Failed to find byte code for java/util/function/BiConsumer
  3. 项目管理-时间冲突带来的问题
  4. Python学习:列表
  5. C++继承的基本语法
  6. 要重复多少次变成潜意识_说了多少次了!通过学校区域一定要......
  7. RocketMQ的Consumer详解之重复消息的解决方案
  8. 转: MySQL 赋予用户权限(grant %-远程和localhost-本地区别)
  9. 前端学习(1402):多人管理22验证joi
  10. 小汤学编程之JavaEE学习day10——Spring
  11. 数学边界(数学萌芽、初等数学、高等数学)
  12. 通过IIS发布网站教程【十分钟完成一个网站发布】
  13. 【C++】关于set的一些奇怪问题:错误C2676 二进制“<”:“const _Ty”不定义该运算符或到预定义运算符可接收的类型的转换
  14. 微众银行电话面试java_微众银行面试经验
  15. python量化交易实战 pdf 王晓华_Ext JS实战(第2版)pdf
  16. 将一个数的每一位都正序输出——简单算法
  17. ArduPilot飞行前检查——PreArm解析
  18. The following packages have unmet dependencies: build-essential : Depends: libc6-dev but it is not
  19. shen_tian_hao的C++快快编程AC代码库(每周更新)
  20. jquery弹幕效果

热门文章

  1. 严重: Servlet.service() for servlet [springmvc] in context with path [/ssm02] threw exception
  2. 两个八进制小数怎么相加_八进制怎么算
  3. vr实景全景是怎么制作的 如何更好的制作出vr全景视频
  4. 解决更换微信公众号后提现签名错误的问题
  5. 高通宣布停止向俄罗斯公司销售产品;微信、抖音上线一键关闭 “个性化推荐 ”;Android 13官宣:5月11日见|极客头条
  6. 无网络也没关系 Google云端硬盘新增脱机模式
  7. Java线上问题排查
  8. C#控件中的KeyDown、KeyPress 与 KeyUp使用区别
  9. 【C51单片机】抽号摇奖机设计(仿真)
  10. ⑨SparkSQL-多数据源创建DataFrame