dex文件加载流程(三) 书接上文dex文件加载流程(二) (gal2xy.github.io)。 一、DexFile::Open()根据上一篇文章的学习可知,在OpenDexFilesFromOat()方法中,如果能够从oat文件中加载dex文件,则最终在OatFile::OatDexFile::OpenDexFile()方法中调用带8个参数的DexFile::Open()方法: 12345678DexFile::Ope 2023-11-20 Android #Android源码解析 #dex
dex文件加载流程(二) 书接上文dex文件加载流程(一)(gal2xy.github.io)。 一、DexFile_openDexFileNative()学习完上一篇文章,我们知道:不管是用PathClassLoader还是DexClassLoader加载dex文件,它们最终都会调用openDexFileNative()方法,该方法对应art/runtime/native/dalivk_system_DexFile.cc 2023-11-20 Android #Android源码解析 #dex
dex文件加载流程(一) dex文件加载系列文章链接: PathClassLoader、DexClassLoader dex文件加载流程(一) dex文件加载流程(二) dex文件加载流程(三) InMemoryDexClassLoader InMemoryDexClassLoader加载内存dex的流程 一、PathClassLoader和DexClassLoaderAndroid启动APP时,会加载dex文 2023-11-20 Android #Android源码解析 #dex
Android中dex odex oat vdex art文件格式区别 1. dexdex是Android平台的可执行文件。java文件先编译成class文件(java字节码),再通过dx或d8工具转换成dex文件。 class文件时java虚拟机的可执行文件,与之相对的,dex文件是Dalvik虚拟机的可执行文件,dex文件中存放的自然就是Dalvik字节码。 Android应用安装包,即apk文件中就含有一个或多个dex文件,命名如下: classes.dex 2023-11-17 Android
ODEX文件格式解析 一、什么是odex文件1.1 定义odex文件是Android上的可执行文件。odex文件是由apk中的dex文件优化生成的,存放在cache/dalvik-cache目录下或者与apk同一目录下,最后删除apk文件中的classes.dex文件。 注意!!!不要被文件后缀名骗了! .dex后缀的文件可以是DEX文件或者OAT文件,.odex不再是ODEX文件(应该是Android 5 2023-11-17 Android #Android #odex
dex文件格式解析 一、dex文件中的数据结构1.1 数据类型 类型 含义 u1 表示1byte的无符号数 u2 表示2bytes的无符号数 u4 表示4bytes的无符号数 u8 表示8bytes的无符号数 sleb128 有符号LEB128,可变长度为1~5bytes uleb128 无符号LEB128,可变长度为1~5bytes uleb128p1 =无符号LEB12 2023-11-10 Android #Android #dex
Android中的Dalvik和ART虚拟机 DalvikDalvik虚拟机(Dalvik Virtual Machine),简称 DVM,是 Google 专门为 Android 平台开发的虚拟机,它运行在 Android 运行时库中。 DVM 与 JVM 的区别 架构不同 JVM基于栈架构,需要频繁地从栈上读写数据,因此需要更多的指令分派和内存访问次数,这样就会耗费不少 CPU 时间。 DVM基于寄存器架构,数据的访问通过寄存器间的直接传 2023-09-13 Android #Android
20230913日报 延续昨天的DVM和ART的学习笔记,然后又学习了apk的打包流程,之后是apk的安装流程源码分析,没想到这部分很长很长,可以把这部分分为3部分: PackageInstaller应用的初始化,这部分在UI界面上体现就是我们常看到的安装确认界面,包含需要使用到的权限信息等。 PackageInstaller安装apk,这部分并不是真正的安装,而是创建一个注册一个InstallEventReceiv 2023-09-13 日报 > 2023年09月 #日报
20230912日报 今天跟着书籍学习了一下DVM、ART以及smali语法,反复看了两三遍,但说实在的,肯定还是记不住的。然后也是对这部分学习写博客,只完成了smali语法的学习笔记,DVM和ART的部分才构思了一点,写文章挺费时间的,但是必须得写,不能养成惰性! 2023-09-12 日报 > 2023年09月 #日报
smali语法学习 一、类型Dalvik 字节码只有两种类型,基本类型和引用类型。Dalvik 使用这两种类型来表示 Java 语言的全部类型,除了对象与数组属于引用对象外,其他的 Java 类型都是基本类型。 语法 含义 V void,只用于返回值类型 Z boolean B byte S short C char I int J long F float D doubl 2023-09-12 Android #Android #smali