Android ClassLoader

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ClassLoader相关的知识,希望对你有一定的参考价值。

ClassLoader负责把类从磁盘加载进内存,交给虚拟机处理。

标准Java虚拟机的ClassLoader体系结构如下(都是抽象类ClassLoader的子类)

 技术分享

ClassLoader使用双亲委派机制,加载一个类,先看上边一系列父类有没有加载,如果没有的话父类再传给下边的一系列子类让其自己加载。这样的好处是防止重复加载,父类加载一次,所有继承他的子类就都算加载了,并且安全性好,防止子类加载的类破坏父类已经加载的类。

技术分享

这个算法逻辑是在loadClass方法里实现的,子类如果想添加自己的加载规则,不要覆盖这个类,而是覆写findClass,loadClass方法会在找不到类的使用调用子类的这个方法来加载

android里是从jar和odex,oat文件里加载类,对此定制了自己的ClassLoader体系,把虚拟机里的C++ bootstrap classloader放进了ClassLoader文件里,成为BootClassLoader,并添加了PathClassLoader(下边的图说的不准,未安装apk的dex也可以加载)和DexClassLoader,如下图

技术分享

下面先看ClassLoader文件

 

以上是关于Android ClassLoader的主要内容,如果未能解决你的问题,请参考以下文章

Android逆向系列文章— Android基础逆向

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)

【Android笔记】android Toast