安卓APP在运行时,每个进程都有单独的进程空间,这是因为每个进程都独有一个Davlik虚拟机。系统启动时会先启动init进程,init进程会启动zygote进程,该进程会为每个要启动的App进程孵化出一个Davlik虚拟机实例.之后该虚拟机实例会将要运行App的DEX文件映射到内存中。
通过虚拟机实例调用dvmDexFileOpenPartial()来解析,加载DEX文件格式.。关于DEX文件格式见博客
dvmDexFileOpenPartial的函数原型如下
int dvmDexFileOpenPartial(const void* addr, int len,