-
这节课有用查看全部
-
?查看全部
-
123查看全部
-
记笔记查看全部
-
vv拒绝查看全部
-
记录查看全部
-
生成补丁包的关键命令查看全部
-
dalvik虚拟机走multidex,art虚拟机不走multidex,因为art是加载aot,为dex的编译指令文件查看全部
-
ide识别到multidexenable为true后,在执行dx命令是追加了--multidex参数查看全部
-
jjjkhhgvvgg查看全部
-
记笔记查看全部
-
代码热修复原理:
将补丁dex插入到pathList.dexElements中的首位,优先加载热修复补丁dex。
查看全部 -
编译期:
运行期:
- 判断java.vm.version是否需要dex文件处理
- davilk虚拟机:apk中二级dex文件解压到应用特定目录 -- 得到二级文件列表:SecondaryDexes -- 二级文件列表出入ClassLoader中
- 二级文件注入ClassLoader:首先反射获取PathClassLoader的pathList字段 -- pathList再次反射 -- 获取内部的dexElements字段 -- 为前期解压获取的二级dex文件:classes2.dex、classesN.dex文件生成对应的Elements数组 -- 最后将Elements元素追加到pathList.dexElements的尾部
- 后续需要加载某个类:遍历dexElements数组,挨个查找是否有要找的类。
查看全部 -
Dex安装
查看全部 -
Java类加载机制:
.class 文件 --> ClassLoader --> 类加载到虚拟机中,运行
Android类加载机制:
PathClassLoader加载.dex文件,找出在dex中要运行的类
查看全部
举报
0/150
提交
取消