【Android 逆向】类加载器 ClassLoader ( Android 的八种类加载器 | ClassLoader | BaseDexClassLoader | DexClassLoader )

简介: 【Android 逆向】类加载器 ClassLoader ( Android 的八种类加载器 | ClassLoader | BaseDexClassLoader | DexClassLoader )

文章目录

一、Android 类加载器

1、ClassLoader 抽象类

2、BootClassLoader

3、BaseDexClassLoader

4、PathClassLoader

5、DexClassLoader

5、SecureClassLoader

6、URLClassLoader





一、Android 类加载器


Android 中的 类加载器 ClassLoader 继承结构 如下 :


image.png



1、ClassLoader 抽象类


ClassLoader 是抽象类 , 是所有 类加载器 ClassLoader 的父类 ;



2、BootClassLoader


BootClassLoader 是 ClassLoader 子类 , 与 Java 虚拟机中的 BootstrapClassLoader 启动类加载器 作用相同 , 用于加载 Java 核心类库 ;


BootClassLoader 是单例类 , 全局唯一 ;


BootClassLoader 是由 Java 代码实现的 , 这与 JVM 中的 启动类加载器 不同 ;



3、BaseDexClassLoader


加载 Dex 字节码文件的业务逻辑就是在 BaseDexClassLoader 中实现的 ;


BaseDexClassLoader 的 3 33 个子类 ,


InMemoryDexClassLoader

PathClassLoader

DexClassLoader

没有实现核心业务逻辑 , 只是调用父类的方法 , 进行不同类型的操作 ;



4、PathClassLoader


PathClassLoader 是 BaseDexClassLoader 子类 , 应用中的类 , 都是由 PathClassLoader 进行加载 ;


Android 系统相关的类 , 如 四大组件类 , Android 自带类 , 都是由 PathClassLoader 加载的 ;



5、DexClassLoader


DexClassLoader 是 BaseDexClassLoader 的子类 , 该类可以加载任意目录下的 DEX 或 JAR 格式的 字节码文件 ;


热修复 就是 加载 SD 卡中的 DEX 文件 , 插件化 也是加载 SD 卡中的 APK 文件中的 DEX 文件 ;


DexClassLoader 在 动态字节码技术 , 热修复 , 插件化 , DEX 加固 等方面使用广泛 ;



5、SecureClassLoader


SecureClassLoader 继承了 ClassLoader 抽象类 , 该类主要实现了一些权限相关的功能 ,



6、URLClassLoader


URLClassLoader 是 SecureClassLoader 的子类 , 其可以使用 url 路径加载 JAR 文件中的类 ;


目录
相关文章
|
6月前
|
Java Android开发
Android面试题经典之Glide取消加载以及线程池优化
Glide通过生命周期管理在`onStop`时暂停请求,`onDestroy`时取消请求,减少资源浪费。在`EngineJob`和`DecodeJob`中使用`cancel`方法标记任务并中断数据获取。当网络请求被取消时,`HttpUrlFetcher`的`cancel`方法设置标志,之后的数据获取会返回`null`,中断加载流程。Glide还使用定制的线程池,如AnimationExecutor、diskCacheExecutor、sourceExecutor和newUnlimitedSourceExecutor,其中某些禁止网络访问,并根据CPU核心数动态调整线程数。
178 2
|
3月前
|
Android开发 UED
Android 中加载 Gif 动画
【10月更文挑战第20天】加载 Gif 动画是 Android 开发中的一项重要技能。通过使用第三方库或自定义实现,可以方便地在应用中展示生动的 Gif 动画。在实际应用中,需要根据具体情况进行合理选择和优化,以确保用户体验和性能的平衡。可以通过不断的实践和探索,进一步掌握在 Android 中加载 Gif 动画的技巧和方法,为开发高质量的 Android 应用提供支持。
|
3月前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
48 1
|
2月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
92 0
|
3月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
41 2
|
8月前
|
Android开发
Android 分享机顶盒项目的封装类《GridView》(二)(转)
Android 分享机顶盒项目的封装类《GridView》(二)(转)
54 2
|
5月前
|
Java 测试技术 Android开发
Android项目架构设计问题之使用反射调用类的私有方法如何解决
Android项目架构设计问题之使用反射调用类的私有方法如何解决
61 0
|
5月前
|
存储 缓存 Java
Android项目架构设计问题之优化业务接口数据的加载效率如何解决
Android项目架构设计问题之优化业务接口数据的加载效率如何解决
61 0
|
5月前
|
Java Android开发 Kotlin
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
46 0
|
7月前
|
安全 Android开发 Kotlin
Android面试题之Kotlin的几种常见的类
这篇文章探讨了Kotlin编程语言中的初始化顺序、延迟初始化、惰性初始化、`lateinit`与`by lazy`的区别、初始化注意事项、继承、嵌套类、数据类、单例类和枚举类的使用,以及密封类的概念。文中通过示例代码详细解释了各种特性,并提醒读者关注初始化顺序和线程安全问题。同时,鼓励读者关注作者的公众号“AntDream”获取更多相关文章。
51 1