/LoadDex

简单的dex动态加载原理

Primary LanguageJava

动态加载Dex文件

PathClassLoader DexClassLoader继承关系

image

原理

读取dex文件生成一个新的DexClassLoader,然后利用反射将context.getClassLoader()的parent设置为新的DexClassLoader,利用了类加载机制中的双亲委派模型。

image

context.getClassLoader()默认获得是一个PathClassLoader,它的parent是一个BootClassLoader

image

通过反射机制改变的就是PathClassLoader的parent

image

dex文件生成过程

1. class生成jar文件

     jar -cvf demo.jar -C build/intermediates/classes/debug/ .

2. 使用bulid-tools下的dx命令生成 dex文件

     ./dx --dex --output=classes.dex demo.jar

dex加载流程(8.0)

image