Android中Multidex的使用

本文介绍Multidex分包的概念及其如何解决65535方法数限制问题,并探讨了Android中不同类加载器的作用。此外,还对比了Dalvik虚拟机与ART运行时的区别,包括它们的编译方式及执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Multidex分包

分包就是一个apk中可以有多个dex。

Multidex分包可以解决什么问题?

分包可以解决65535问题

Java中常见类加载器

  • BootstrapClassLoader:纯C++实现的类加载器,没有对应的Java类,主要加载jre/lib/目录下的核心库
  • ExtClassLoader:类的全名是sun.misc.Launcher$ExtClassLoader,主要加载/jre/lib/ext/目录下的扩展包
  • AppClassLoader:sun.misc.Launcher$AppClassLoader,主要加载CLASSPATH路径下的包

Apk和Dex文件

  • .apk文件
    Android Package Android安装包
  • .dex文件
    Dalvik VM executes Android Dalvik虚拟机执行程序

apk文件内容

  • AndroidManifest.xml配置信息
  • META-INF签名信息
  • classes.dex Java字节码文件
  • res资源文件
  • resources.arsc二进制资源文件

dvm和art

  1. dvm
    Android Dalvik Android虚拟机
    • JIT编译
    • 应用安装时执行dexopt指令,将dex文件优化为odex文件
    • 应用运行时,会将由二进制翻译为机器码的流程
  2. art
    Android Runtime Android运行时、Android4.4引入
    • AOT编译
    • 应用安装时执行dex2oat指令,将dex文件翻译为oat文件
    • 应用运行时,由二进制翻译为机器码的流程

MultiDex使用教程

  1. 添加MultiDex的依赖
    compile "com.android.support:multidex:1.0.0"
  1. 在配置项中启用MultiDex
multiDexEnabled true
  1. 在Application中继承MultiDexApplication类

分析apk

在Android Studio中,Build->Analyze Apk,可以看到apk中的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值