dex: 类加载过程
来源:互联网 发布:nginx lua 添加头部 编辑:程序博客网 时间:2024/05/16 08:52
dex:类加载过程
此文主要介绍如何加载一个类。
源码:https://android.googlesource.com/platform/libcore/+/master/dalvik/src/main/java/dalvik/system/
如图:
总结:
1、就是通过对应的classLoader(PathClassloader、DexClassloader)的findClass方法;
2、findClass方法是在父类BaseDexClassloader中实现的,此类中会维护一个DexPathList对象,然后通过此DexPathList对象的findClass()方法获取class;
3、DexPathList对象中会维护一个Element[]数组,此数组中存储所有的dex文件,然后在通过element.findClass()方法;
4、Element是DexPathList中的一个内部类,此内部类中维护了一个DexFile对象,然后通过DexFile.loadClassBinaryName()方法获取class;
5、DexFile是一个保存dexX信息的类,通过其defineClassNative()方法获取class,最后返回此class。
备注:
1、除了第一个dex,其他的dex都是以资源的形式加载;
2、插件化实现,就是在application初始化前,要将dex文件注入到
系统的classloader中;
3、android虚拟机的类加载机制是一个类只会被加载一次;
4、类加载器:BaseDexClassloader有两个子类
PathClassloader: 加载系统类和主dex;
DexClassloader: 加载其他的dex;
都是通过BaseDexClassloader中的findClass(String name)加载类的;
5、正真存储dex信息的是DexFile这个类,最终也是通过DexFile的defineClassNative方法获取的class文件。
- dex: 类加载过程
- Android dex加载过程分析
- Android之ClassLoader类加载器(MultiDex、动态加载dex)
- 类加载过程---加载
- dex文件手动加载
- Dex动态加载
- 动态加载DEX
- 动态加载dex笔记
- 动态加载dex
- 加载多个dex
- 动态加载dex
- android dex加载跟踪
- 插件化知识详细分解及原理 之ClassLoader及dex加载过程
- Android 应用开发之Dex解析和类加载
- 来一发DEX加载器,可以兼容Activity类的。。
- android类加载: 内部引用类同dex文件(不包括BootClassLoader加载类), 否则加载失败
- Android动态加载jar/dex
- Android动态加载jar/dex
- 过滤输入框最大值和最小值
- Chrome线程模型中的Modal窗口返回值问题
- Android 实用插件
- Linux 下使用 Python 连接 Windows 服务器上的数据库
- <a>标签用法
- dex: 类加载过程
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解(转)
- 搞笑版费马大定理 CSU
- 数据结构之顺时针打印矩阵
- 洛谷 P2153 [SDOI2009]晨跑
- Android数据库并发操作解决思路
- Java-instanceof
- Information:Gradle tasks [:app:assembleDebug] Error:Execution failed for task ':app:transformClasses
- 常用正则